[rabbitmq-discuss] How to shutdown cleanly a Java application using Consumers?

Laing, Michael michael.laing at nytimes.com
Thu Apr 3 17:54:20 BST 2014


I found this thread interesting but... we just pull the cable and let a
peer take over :) ml


On Thu, Apr 3, 2014 at 12:47 PM, Simon MacMullen <simon at rabbitmq.com> wrote:

> On 03/04/14 17:28, Bertrand Guay-Paquet wrote:
>
>> I tested this on RabbitMQ 3.2.4 and calling basicCancel for a consumer
>> tag does not interfere with the ability to basicAck a message currently
>> being processed
>>
>
> That is correct.
>
>
>  (I used Thread.sleep() in the consumer to ensure the
>> operation order). The handleCancelOk() method is only called after the
>> handleDelivery() method returns.
>>
>
> That is also correct.
>
>
>   From what I could piece together, calling basicCancel queues the
>> channel rpc command for execution after whatever is already queued. The
>> consumer even consumes its buffered messages (basicQos > 1) before
>> processing the cancel command.
>>
>
> So there has been a certain lack of clarity in this thread. Two key points:
>
> * It is absolutely fine and normal to acknowledge a message after its
> consumer has been cancelled. The message remains acknowledgeable until the
> channel it was delivered on closes.
>
> * Once you have received basic.cancel-ok, you will not receive any more
> deliveries for that consumer.
>
> So the way to cleanly[0] shut down a consumer in the Java client is:
>
> 1) Invoke basicCancel()
> 2) Process and acknowledge messages as usual
> 3) When handleCancelOk() gets called and you have acknowledged all
> messages you received before it, you can then consider yourself done, close
> channels and connections as appropriate.
>
> [0] I am assuming "cleanly" here means without causing messages to be
> redelivered. Otherwise you can just pull the network cable :-)
>
> Cheers, Simon
>
> --
> Simon MacMullen
> RabbitMQ, Pivotal
>
> _______________________________________________
> rabbitmq-discuss mailing list
> rabbitmq-discuss at lists.rabbitmq.com
> https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20140403/95c51931/attachment.html>


More information about the rabbitmq-discuss mailing list