[rabbitmq-discuss] ReturnListener is not invoked

Matthias Radestock matthias at rabbitmq.com
Tue Jan 22 23:31:01 GMT 2013


Dmitriy,

On 22/01/13 22:35, Dmitriy Bannikov wrote:
> By the way, does it mean that if RabbitMQ server doesn't have available
> disk space more than disk_free_limit, messages will be lost?

Depends. The server stops reading from the TCP socket, since it has 
nowhere to put the messages it would be reading. So the messages will 
pile up in various buffers, and eventually the publishing application's 
tcp send operations will encounter full buffers (and, usually, block).

If at that point the disk alarm (or any similar alarm) goes away then 
the message flow will resume and everything will continue as if nothing 
had happened. It's no different from a the server just appearing a bit slow.

If, otoh, the connection drops then the data in the various buffers 
along the way will be lost.

> but how will I know that this particular message hasn't been added
> to  queue?

Publishing in AMQP is an asynchronous operation - the only way to get 
acceptable performance regardless of network latency. So there is no 
direct/immediate indication of the fate of the message. However...

Any successfully completed synchronous operation following a series of 
publishes (or other async operations) serves as an indicator that the 
preceding async operations were received by the server and successfully 
processed.

Though this still doesn't mean the messages have been safely enqueued, 
stored on disk if necessary, mirrored, etc, etc.

That's what confirms are for. http://www.rabbitmq.com/confirms.html

Regards,

Matthias.


More information about the rabbitmq-discuss mailing list