-
Bug
-
Resolution: Done
-
Blocker
-
AMQ 7.9.4.GA
-
False
-
None
-
False
-
-
Large messages produced to a Queue using the AMQP protocol are not consumed under some specific conditions.
If the consumer is connected to a different broker in the cluster where the message was initially sent, and that consumer defines a matching selector (by filtering a message header value), the cluster moves the message to that node where the consumer is connected (that's ok because the filter matches the header value), but then the message is stuck and never consumed.
After doing some tests, the following list shows the conclusions:
- If the large message is sent through AMQP to a node in the cluster (e.g. node1) and the consumer is connected to another node (e.g. node2) by defining a matching selector, the message is NOT consumed.
- If the message is not "large", the message is consumed OK
- If the consumer is connected to the same node where the large message was added, the bug never happens and the message is consumed OK.
- If the consumer is connected to a different node in the cluster without defining a "selector", the large message is consumed OK
- If the large message has been sent using a different protocol (only Openwire was tested), the message is consumed OK through the AMQP protocol (now we are mixing two protocols).
The header used for the selector in the consumer code was "JMSCorrelationID" (which is a standard header set by the Message.setJMSCorrelationID() method on the producer side).
Other headers or custom properties were not tested.