-
Notifications
You must be signed in to change notification settings - Fork 3.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
STOMP: stop using a queue property combination that is deprecated #13009
Comments
The obvious fix of marking respective queues exclusive has very interesting consequences - the queue names STOMP generates for topics appear to be deterministic - meaning for the same subscription endpoint same queue name generated. This fact plus exclusive: true make tests such as this: def test_share_subscription(self):
destination = '/topic/durable-shared'
conn2 = self.create_connection()
conn2.set_listener('', self.listener)
try:
self.__subscribe(destination)
self.__assert_receipt()
self.listener.reset(1)
self.__subscribe(destination, conn2)
self.__assert_receipt()
self.listener.reset(100)
n = 100
# send 100 messages
for x in range(0, n):
self.conn.send(destination, "msg" + str(x))
self.assertTrue(self.listener.wait_for_complete_countdown())
self.assertEqual(n, len(self.listener.messages))
finally:
conn2.disconnect() fail with logs like this:
repeated runs of the same test produce same-looking log, like the one above with exact queue name! |
@ikavgo yes, a subscription ID is used when provided. I suspect |
Hi, I was wondering whether this issue will be a blocker for the removal of transient non-exclusive queues, or might we find ourselves in a situation where rabbit-server would refuse to create these queues? It seems to me that Spring STOMP broker sets a subscription ID and apparently that leads to a deterministic name for the queues, causing issues if queues are made exclusive by default. Or did I misunderstand the above discussion? If I understood correctly, it seems to me that setting the queues exclusive would break backwards compatibility and cause issues with at least users of Spring STOMP brokers. |
@acutus Spring STOMP will have to switch to durable client-named queues. The Shovel plugin will no longer support transient entities in the future. It will not be a blocker for transient queue removal. Khepri does not have a concept of transient entities and never will, and one day Khepri will be the metadata store in RabbitMQ. The durability property can be ignored to simplify upgrades, for example. |
@michaelklishin thank you for the prompt reply. I created spring-projects/spring-framework#34540 to make spring-framework aware of this. |
Describe the bug
https://discord.com/channels/1092487794984755311/1092487794984755314/1323581561437814836
Reproduction steps
omq stomp -x 0 -T /topic/foo --queue-durability none
Expected behavior
We think by default stomp subscription queues should be exclusive
Additional context
No response
The text was updated successfully, but these errors were encountered: