You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Jason Foster (JIRA)" <ji...@apache.org> on 2013/11/26 04:35:35 UTC

[jira] [Created] (CAMEL-7009) RabbitMQ Consumer does not pick up REPLY_TO

Jason Foster created CAMEL-7009:
-----------------------------------

             Summary: RabbitMQ Consumer does not pick up REPLY_TO
                 Key: CAMEL-7009
                 URL: https://issues.apache.org/jira/browse/CAMEL-7009
             Project: Camel
          Issue Type: Bug
          Components: camel-rabbitmq
    Affects Versions: 2.12.1
            Reporter: Jason Foster


When using RPC in RabbitMQ, the producer sets up an exclusive queue and specifies that queue as the reply_to on outgoing messages.  When the consumer in camel-rabbitmq receives the messages, the reply_to isn't available on the exchange, so no RPC calls can be completed.

The following Python script (from RabbitMQ In Action) produces the message with a reply_to property:

import time, json, pika

creds_broker = pika.PlainCredentials("guest", "guest")
conn_params = pika.ConnectionParameters("localhost",
                                         virtual_host = "/",
                                         credentials = creds_broker)
conn_broker = pika.BlockingConnection(conn_params)
channel = conn_broker.channel()

msg = json.dumps({"client_name": "RPC Client 1.0",
                  "time" : time.time()})
result = channel.queue_declare(exclusive=True, auto_delete=True)
msg_props = pika.BasicProperties()
msg_props.reply_to = result.method.queue

channel.basic_publish(body=msg,
                      exchange="talentsprout.rpc",
                      properties=msg_props,
                      routing_key="ping")

print "Sent 'Ping' RPC call.  Waiting for reply..."

def reply_callback(channel, method, header, body):
     """Receives RPC server replies."""
     print "RPC Reply --- " + body
     channel.stop_consuming()

channel.basic_consume(reply_callback,
                      queue=result.method.queue,
                      consumer_tag=result.method.queue)

channel.start_consuming()



The following route in Camel would consume messages from this queue:

		from("rabbitmq://192.168.213.130/talentsprout.rpc?queue=ping&routingKey=ping&durable=False&autoDelete=False&autoAck=False&username=guest&password=guest")
		.log("Headers: ${headers}");

The log statement from that route shows that no reply_to header is added.

Without this feature, RPC from external producers cannot work.



--
This message was sent by Atlassian JIRA
(v6.1#6144)