[rabbitmq-discuss] Erlang Client RPC issues
    Chris Jimison 
    cjimison at gmail.com
       
    Wed Dec  4 06:06:52 GMT 2013
    
    
  
Hey all,
I am running an Erlang server and I want to make an RPC call to another server that may or may not be running.
I am running the following code:
* Connection is a valid amqp connection
    Client = amqp_rpc_client:start(Connection, <<“info_queue”>>),
    Reply = amqp_rpc_client:call(Client, <<"info">>),
    amqp_rpc_client:stop(Client),
Two questions:
1) I noticed in the amqp_rpc_client.erl that it is not handling #’basic.return’{} messages.  I added a call to:
 
amqp_channel:register_return_handler(Channel, self()),
in the init function and a handle_info call:
handle_info({#'basic.return'{}, Content}, State = #state{continuations = Conts, channel = _Channel}) ->
    #amqp_msg{props = #'P_basic'{correlation_id = Id}, payload = _Payload} = Content,
    From = dict:fetch(Id, Conts),
    gen_server:reply(From, basic_return),
    {noreply, State};
and that seems to work well.  I am very new to RabbitMQ and I am not really sure if this is going to break something very badly.  Is there a reason amqp_rpc_client is not a return_handler?
2) When I call amqp_rpc_client:stop I am getting error messages (with our without my changes) about:
{error,{consumer_died,normal}}
It seams to me that when the Channel created in amqp_rpc_client is shutdown, the amqp_direct_consumer is getting the ‘DOWN’ message and returning {error, {consumer_died, Info}, C};
Does this sound correct that calling stop on an amqp_rpc_client should be generating so many errors?  Is there some cleaner way I should be stopping the amqp_rpc_client?
I tried moving the amqp_channel:close call into the handle_call(stop, _From, State) function and that did clean things up a bit.  But I am still getting a:
gen_server <0.19536.1> terminated with reason: {error,{consumer_died,normal}}
Thanks for any insights and help!
Environment:
Mac OS X: 10.9
RabbitMQ server 3.2.1
rabbitmq-erlang-client github fork, based on the rabbitmq_v3_2_1 git tag
- Chris
    
    
More information about the rabbitmq-discuss
mailing list