ActiveMQ / JMS has a built in-mechanism for ensuring that messages that share a common header (namely, the JMSXGroupID header) are always consumed by the same consumer of a queue when using a competing consumers pattern. The consumers of a queue are completely agnostic of the actual header values, as the guarantee of messages with a common header is performed server-side and not consumer-side. For more details on how this works, see http://activemq.apache.org/message-groups.html .
Is doing such a thing possible with AMQP or with something RabbitMQ specific?
RabbitMQ implements version 0-9-1 of the AMQP specification in the core, with a number of extensions to the specification. RabbitMQ implements AMQP 1.0 via a plugin. However, AMQP 1.0 is a completely different protocol than AMQP 0-9-1 and hence not a suitable replacement for the latter.
AMQP allows for various guaranteed messaging modes specifying a message be sent: At-most-once(sent one time with the possibility of being missed). At-least-once (guaranteeing delivery with the possibility of duplicated messages). Exactly-once (guaranteeing a one-time only delivery).
RabbitMQ is a messaging system that uses AMQP 0.9. 1 as the basis for a set of standards controlling the entire message passing process. AMQP 0.9. 1 was published in November 2008, which is also the version that will be covered in this article.
The AMQP 0-9-1 specification gives consumers control over this. There are two acknowledgement modes: After broker sends a message to an application (using either basic. deliver or basic.
As of the time this answer is written, this is not possible with AMQP alone and will require work on the application side of things. RabbitMQ plans on implementing something like this in the future, but it is not slated for release or development anytime soon.
Reference: https://twitter.com/old_sound/status/410898209788411904
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With