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