You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The library creates a session-scoped durable JMS topic exchange for durable topic subscribers with a selector. It uses a UUID in the name. The exchange is not deleted between restarts (to keep messages for closed durable subscribers), so a new session would create yet another exchange. The documentation explains this design. A new binding with the selector arguments is created between the exchange and the subscriber queue.
This avoids creating an exchange for each subscriber, but it makes it impossible to re-use the existing exchange, making the exchanges leak until the subscribers unsubscribe.
It'd be more appropriate to create a dedicated exchange for each durable subscriber with a selector. The name would be based on the topic and subscription names (using a hashing mechanism, to control the length), this way the exchange could be re-used between restarts.
The name could use a MD5 of the topic and subscription names, with a base 64 encoding (+ replaced by -, / by _, = removed). This is the algorithm used for server-named queues.
The library creates a session-scoped durable JMS topic exchange for durable topic subscribers with a selector. It uses a UUID in the name. The exchange is not deleted between restarts (to keep messages for closed durable subscribers), so a new session would create yet another exchange. The documentation explains this design. A new binding with the selector arguments is created between the exchange and the subscriber queue.
This avoids creating an exchange for each subscriber, but it makes it impossible to re-use the existing exchange, making the exchanges leak until the subscribers unsubscribe.
It'd be more appropriate to create a dedicated exchange for each durable subscriber with a selector. The name would be based on the topic and subscription names (using a hashing mechanism, to control the length), this way the exchange could be re-used between restarts.
The name could use a MD5 of the topic and subscription names, with a base 64 encoding (
+
replaced by-
,/
by_
,=
removed). This is the algorithm used for server-named queues.Original discussion: #454
The text was updated successfully, but these errors were encountered: