[rabbitmq-discuss] Advice on where to reset connection and channel

Michael Klishin mklishin at gopivotal.com
Sun Feb 16 06:44:43 GMT 2014

On 16 Feb 2014, at 09:09, cw storm <cwstorm at gmail.com> wrote:

> I don't think I would want to include the function to re-establish the connection/channel in both of the handlers.  So, where would I perform the re-connect logic.  Maybe I should just pick one.

JVM language clients that support reconnection, including RabbitMQ Java client itself on branch bug14587, have a wrapper connection that
delegates everything to the underlying connection (so, implements com.rabbitmq.client.Connection) and adds a shutdown listener
that performs recovery:

 * Reconnects (creates a new delegate connection)
 * Reopens all channels (there is a wrapper Channel as well), including various listeners
 * Recovers queues, exchange, bindings, and consumers (in this order)

> Also, another consumer callback name "handleCancel".  This will only be invoke when an unexpected cancellation by the broker.  That would also mean I would have to reconsume from the other node by creating another connection/channel.  I assume this does not get invoke during a restart of the broker or a force close connection.  That would only apply to the two that I mentioned, right?

Not “unexpected cancellation” but when the queue is deleted.


Software Engineer, Pivotal/RabbitMQ

More information about the rabbitmq-discuss mailing list