[rabbitmq-discuss] RabbitMQ and AMQP questions
Jerry Kuch
jerryk at vmware.com
Thu Nov 3 20:23:28 GMT 2011
Hi, Mark:
Regarding 1: In the presence of failures, defining once only semantics
isn't really possible and in some sense also isn't desirable (more on this
below).
Regarding 2: We could think of RabbitMQ deliveries as being FIFO in the
absence of certain types of failures. Consider how AMQP ACKs are used to
implement a "transfer of responsibility" for messages. If a message is
delivered to a consumer that contains within it directions for some job
for the consumer to perform, the proper behavior is for the consumer to
ACK the message once he has completed the job. At that point, the Rabbit
broker knows it no longer needs to care about the message and can be relieved
of its obligation to remember the message. If the consumer had crashed
after delivery, but before ACK-ing, its channel to the broker would close
and the broker would re-queue the message for redelivery as without the client's
ACK, the broker never relinquished responsibility for maintaining the message's
existence. Thus we have "FIFO in the regular case, but with re-queueing that
potentially weakens that, with a net result that you actually want, when
something goes wrong."
Make sense?
Best regards,
Jerry
----- Original Message -----
From: "ae6rt" <mspetrovic at gmail.com>
To: rabbitmq-discuss at lists.rabbitmq.com
Sent: Tuesday, October 25, 2011 1:09:39 PM
Subject: [rabbitmq-discuss] RabbitMQ and AMQP questions
Good day. I have read the RabbitMQ docs and the EAP RabbitMQ in
Action book. And I'm in the process of evaluating AMQP and Rabbit
specifically for use in a major project.
I generally like what I see in Rabbit, but in the course of my
research, I have run across some statements about it that I would like
to understand better. For example, this blog post
http://bhavin.directi.com/rabbitmq-vs-apache-activemq-vs-apache-qpid/
makes the following assertions about Rabbit:
1) No ONCE-ONLY semantics. Messages may be sent twice by RabbitMQ to
the consumer(s)
2) Unordered; not FIFO delivery
I'm actually not certain (1) is a criticism of AMQP or Rabbit. On its
face, it seems morally neutral, yet at the same time it appears to
make an important point. Some interpretation from people in the know
here would still be helpful and much appreciated.
As for (2), I recognize it as an oversimplication, after reading this
thread in this group:
http://groups.google.com/group/rabbitmq-discuss/browse_thread/thread/19066ba6f2944df8/f9d7d4bea18f2b5a?lnk=gst&q=fifo#
The explanation by Matthias Radestock is helpful, but even after
reading his citation of the AMQP spec with respect to channels and
"single paths", I am still left with the sense that somehow AMQP
recognizes and codes to a world that is not quite so simple as "is- or
isNot-FIFO". But I cannot put my finger on why, or what exactly is
being said.
Would someone here be kind enough to talk about why section 4.7 of the
0.9.1 spec reads ever so slightly tortured?
And a short discussion of (1) would be very helpful, too.
Thank you very kindly.
Mark P.
_______________________________________________
rabbitmq-discuss mailing list
rabbitmq-discuss at lists.rabbitmq.com
https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
More information about the rabbitmq-discuss
mailing list