@@ -9279,6 +9279,47 @@ func TestJetStreamPullConsumerMaxWaiting(t *testing.T) {
92799279 }
92809280}
92819281
9282+ func TestJetStreamChangeConsumerType(t *testing.T) {
9283+ s := RunBasicJetStreamServer(t)
9284+ defer s.Shutdown()
9285+
9286+ nc, js := jsClientConnect(t, s)
9287+ defer nc.Close()
9288+
9289+ _, err := js.AddStream(&nats.StreamConfig{Name: "TEST", Subjects: []string{"test.*"}})
9290+ require_NoError(t, err)
9291+
9292+ // create pull consumer
9293+ _, err = js.AddConsumer("TEST", &nats.ConsumerConfig{
9294+ Name: "pull",
9295+ AckPolicy: nats.AckExplicitPolicy,
9296+ })
9297+ require_NoError(t, err)
9298+
9299+ // cannot update pull -> push
9300+ _, err = js.UpdateConsumer("TEST", &nats.ConsumerConfig{
9301+ Name: "pull",
9302+ AckPolicy: nats.AckExplicitPolicy,
9303+ DeliverSubject: "foo",
9304+ })
9305+ require_Contains(t, err.Error(), "can not update pull consumer to push based")
9306+
9307+ // create push consumer
9308+ _, err = js.AddConsumer("TEST", &nats.ConsumerConfig{
9309+ Name: "push",
9310+ AckPolicy: nats.AckExplicitPolicy,
9311+ DeliverSubject: "foo",
9312+ })
9313+ require_NoError(t, err)
9314+
9315+ // cannot change push -> pull
9316+ _, err = js.UpdateConsumer("TEST", &nats.ConsumerConfig{
9317+ Name: "push",
9318+ AckPolicy: nats.AckExplicitPolicy,
9319+ })
9320+ require_Contains(t, err.Error(), "can not update push consumer to pull based")
9321+ }
9322+
92829323////////////////////////////////////////
92839324// Benchmark placeholders
92849325// TODO(dlc) - move
0 commit comments