Description
For AMQP 'anonymous producers' (those that dont have a fixed destination and attach to the null address) the broker bases its 'routing type' decisions on the address a message is sent to, typically falling back to the default routing type from the address settings.
(Technically it could look at terminus capabilities for type hints, but anonymous producers would not tend to have these for the same reason they dont have a fixed address: it isnt known information at the time).
This leads to user gotchas where behaviour can be surprising and/or non-deterministic (e.g due to differing timing between producers producing messages and the consumers lifecycle). This is especially true for people wanting to use queues, and encountering interaction with the brokers default multicast routing type (something many arent yet aware of, not having seen the quick detail tucked away in the docs). Here it is easy to send a message 'to a queue' that then gets dropped unexpectedly, but also auto-creates a multicast address that then prevents attaching the consumers aiming to receive such messages from the queue.
The broker already supports a couple varieties of annotation based mechanism for determining its routing type information from the message (the one AMQP JMS clients use to convey the JMSDestination type, and another of artemis own), but this detail isnt consulted at all during message handling for the anonymous producers currently. Having the broker examine the detail would remove these gotchas when specified.
Attachments
Issue Links
- is duplicated by
-
ARTEMIS-1859 Incorrect routing with AMQP anonymous producer & auto-created queue
- Closed
- links to