Description
Hi Tim,
AMQ-5187 breaks some of our message routing where we use virtual queues to control mirroring/replication of messages.
A simple example...
VIRTUAL.PUB.ALL -> queue://SUBSCRIBER1 -> queue://SUBSCRIBER2 VIRTUAL.PUB.SUBSCRIBER1 -> queue://SUBSCRIBER1
...fails this assert because there are two composite destinations that route to queue://SUBSCRIBER1. With asserts disabled messages are routed as expected.
I have attached a test case exemplifying this.
We use layers of composite queues to achieve explicit routing of messages to either one consumer or all consumers, and (also with static subscriptions) to target optimal routes across a mixture of LAN and WAN links.
Fully appreciate that subscription recovery from virtual topics of a mapped queue is a beneficial thing to do, however from our perspective it is also useful to retain the behaviour of being able to have a many-to-one mapping between composite queues and physical queues. For our own use case we don't have any requirement for subscription recovery - we require cast-iron guarantees around messaging so all messages persistent and are delivered to one or more physical queues on brokers with persistence enabled, so this obviates the need for subscription recovery.
Could this validation relaxed, could it be made possible for the new behaviour to be disabled or do you have any suggestions as to how else we could achieve our use case?
Thanks,
James
Attachments
Attachments
Issue Links
- is broken by
-
AMQ-5187 Virtual destination consumers do not support retroactive message recovery
- Resolved