- Ya
- 4 Septemba 2026, 20:14 UTC
- Mwandishi
- Kamo
- Ahadi ya
- 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.