[rabbitmq-discuss] Message Reliability

Simon MacMullen simon at rabbitmq.com
Tue Sep 17 16:18:01 BST 2013


On 17/09/13 16:04, Jain, Punit wrote:
> ·If I get the confirmation acknowledgement, what does it mean? Is it
> message successfully delivered to “upstream queue” or “downstream exchange”?

It means it was successfully published locally.

> ·If it guarantees delivery to “downstream exchange”, then do we need to
> use message persistence?

I'm not sure how you are connecting these two concepts.

> ·If confirmation means delivery to upstream queue, then, I think, it
> makes sense to use message persistence, right? If the upstream broker
> crashes, then without message persistence, messages in upstream queue
> will be lost, right?

Yes.

> ·How does message persistence work?

Short version: messages in queues are stored on disk. It just means that 
messages will survive a broker restart.

Long version: 
http://hg.rabbitmq.com/rabbitmq-server/file/c4802531640a/src/rabbit_queue_index.erl#l32 
http://hg.rabbitmq.com/rabbitmq-server/file/c4802531640a/src/rabbit_msg_store.erl#l177 
etc.

> How long messages are persisted on
> disk? Are they removed from disk when the consumer sends the
> acknowledgement?

Messages are persisted for as long as they're in the queue, so they are 
removed when they're acknowledged (or delivered in autoack mode).

> ·Or is there any other way to achieve message reliability? Any
> improvements or suggestions?

If you haven't done so already, you should read 
http://www.rabbitmq.com/reliability.html.

Cheers, Simon

-- 
Simon MacMullen
RabbitMQ, Pivotal


More information about the rabbitmq-discuss mailing list