[rabbitmq-discuss] Handling Consumer Cancel Notifications in Java Client

Chris stuff at moesel.net
Fri Aug 9 15:15:52 BST 2013

I'm an optimistic person, so I just had to try 3.1.4.  But... you are
right.  It does not work there either.

The good news is that I've updated the handleCancel method to consume from
a new thread (as you suggested) and that seems to work!  Is this
essentially what you had in mind?

        public void handleCancel(String consumerTag) throws IOException {
            System.out.println("handleCancel: " + consumerTag);

            final SimpleConsumer self = this;
            Runnable reconsumeTask = new Runnable() {
                    public void run() {
                        try {
                            String cTag = getChannel().basicConsume(queue,
                            System.out.println("basic(Re)Consume: " + cTag);
                        } catch (IOException e) {
                            System.err.println("basic(Re)Consume FAILED");
            new Thread(reconsumeTask).start();

If I recall, it's generally recommended that you not use the same channel
in multiple threads-- but I guess this is an exception to the rule?

Thanks again for the help!

On Fri, Aug 9, 2013 at 9:41 AM, Michael Klishin <mklishin at gopivotal.com>wrote:

> Michael Klishin:
> > This looks like a bug in the Java client.
> Using basicConsume from another (e.g. newly created) thread is how you can
> work
> around this issue. Passing this for consumer reference instead of
> instantiating a new
> consumer should work fine.
> --
> MK
> _______________________________________________
> 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/20130809/fcff2389/attachment.htm>

More information about the rabbitmq-discuss mailing list