[rabbitmq-discuss] Changes to Erlang client for bug22056

Garrett Smith g at rre.tt
Thu Mar 11 00:41:24 GMT 2010

I noticed that to consume from a queue in the Erlang client, code that
once looked like this:

  amqp_channel:call(Channel, #'basic.consume'{queue = Q})

now is spelled:

 amqp_channel:subscribe(Channel, #'basic.consume'{queue = Q}, self())

I'm currently working through the correct link/monitor strategy in
Erlang to handle a couple of obvious points of failure:

- The AMQP connection fails, causing problems for any
producer/consumer processes
- A channel reader or writer crashes, leaving the channel or
connection in a possibly funky state

My Pavlovian/Erlang approach is to use links and/or monitors in Erlang
to crash any dependencies and let supervisors restart the lot.

This change looks like it may introduce logic for handling such
conditions. Being very lazy, I was hoping someone could elaborate on
what motivated the change (I don't think I have access to bug reports)
and, if convenient, provide guidance on implementing a sound restart
scheme for these types of failures.


More information about the rabbitmq-discuss mailing list