[rabbitmq-discuss] publish mandatory/immediate flags
Matthias Radestock
matthias at lshift.net
Fri Nov 9 11:09:19 GMT 2007
Matt,
matt wrote:
> I have a question regarding the mandatory and
> immediate flags. One of the basic publish options is as follows:
>
> session.getChannel().basicPublish(session.getTicket(),
> session.getExchange(), key, basicProps, data);
>
> This has mandatory/immediate set to false. Could it be that the new
> server load is causing requests to get dropped at times? What are the
> drawbacks to changing those values to true by using the other call?
With 'mandatory' set to true you will get an asynchronous notification
when a message cannot be routed to any queue, e.g. because there are no
queues bound to the exchange, or the routing key matching fails to
produce a result.
With 'immediate' set to true you will get an asynchronous notification
when a message cannot be sent to a consumer straight away, i.e. if it
would be queued. This can happen there are no consumers registered on a
queue or they are all overloaded.
In the Java client, the notifications are received by the ReturnListener
set with channel.setReturnListener(listener).
The drawback of setting these flags is an increase in latency and drop
in throughput, though not by all that much.
Matthias.
More information about the rabbitmq-discuss
mailing list