ResponseQueue:你可以在RabbitMq中发送队列作为消息/正文的一部分吗?

时间:2015-03-21 19:14:19

标签: rabbitmq message-queue

在MSMQ中有一个很好的功能,称为响应队列:作为消息的一部分,人们也可以发送(私有/不可见)队列,其中等待响应 - 非常类似于异步世界中的回调。从技术上讲,此功能只是私有队列和队列标记的包装。 RabbitMQ中有类似的内容吗?

1 个答案:

答案 0 :(得分:1)

其实我弄清楚了:

以这种方式创建私有队列:

privateQ = channel.queue_declare(exclusive=True)

并通过rep_to prop传递响应队列,发送命令(而不是消息的属性)

channel.basic_publish(exchange='',
                      routing_key='rpc_queue',
                      properties=pika.BasicProperties(
                            reply_to = privateQ,
                            ),
                      body=request)

真正的区别 - 实际上由API形式化的方式暗示 - 是你不应该为每条消息创建一个回复队列 - 因为这是低效的。建议的方法是使一个私有队列接受所有响应,并合并相关ID。