Add a queue-group subscribe, so work is shared rather than pinned to one pod

Featurekamo-shared-library
Shipped
September 4, 2026 at 8:14 PM UTC
Author
Kamo
Commit
3f8aeb2

Companion to subscribeEphemeral. Two different jobs, two different consumers: subscribeEphemeral every pod must see every message (anything ending in a STOMP broadcast) subscribeQueue the work must happen exactly ONCE (sending an email, calling a provider) Neither is what a plain durable does at more than one replica. With no deliver group a durable push consumer admits a single subscriber, so the second pod is refused [SUB-90012] and the work is pinned to whichever pod bound first — with nothing taking over if that is the pod that dies. Adding a deliver group turns the same durable into a queue the pods share, keeping redelivery and maxDeliver exactly as they were. reconcileDeliverGroup mirrors the existing reconcileDurableFilter, and is not optional: every consumer this change converts already exists on the stream in the old shape, and jnats will not join a plain durable as a queue. Without the reconcile the first deploy after this would leave those subscriptions permanently dead instead of shared — the same silent, self-perpetuating failure the filter reconcile was written for. The delivery loop is now one method behind all three entry points.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing