[rabbitmq-discuss] Duplicate Messages received after basicRecoveryAsync() is called.

John Mann jmann at versatile.com
Wed Mar 3 11:42:31 GMT 2010

Thanks for all of the help.  I got it working!

I had no luck with calling basicCancel() and then waiting for the handleCancelOK() method to be called.  I realized after stepping through the source with a debugger that a Channel disassociates the Consumer when basicCancel() is called:

ChannelN.java: line 645:

                Consumer callback = _consumers.remove(consumerTag);

The only way that I knew I could reestablish this association was by calling Channel.basicConsume().  Unfortunately this didn't work.  Messages after that point were never delivered.  

I finally used the close and re-open the Channel approach.  This worked as expected.

If anyone would like to see my solution code, let me know.



On Feb 26, 2010, at 7:50 PM, Tony Garnock-Jones wrote:

> Matthias Radestock wrote:
>> 1) send basic.cancel
>> 2) wait for basic.cancel-ok
>> The hook for step 2 is provided by overriding the handleCancelOk method 
>> on the consumer class.
> Note also that basicCancel() doesn't return to the caller until the
> basic.cancel-ok has been received and completely processed by the client
> library and the Consumer object.
> Regards,
>  Tony

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20100303/0bc15a77/attachment.htm 

More information about the rabbitmq-discuss mailing list