RabbitMQ:从队列中检索特定消息

时间:2012-10-31 14:06:05

标签: rabbitmq amqp

我无法理解RabbitMQ中的路由。考虑我有几个生成消息到队列的生成器(让它们称为客户端)。例如,客户ABC将邮件发送到队列X1

让消费者响应发送响应队列的所有消息。例如,消费者从队列X1获取消息,做某事并发送响应队列X1

例如,客户端A如何确定发送给它的队列X1消息中的位置以及发送给客户端BC的消息的位置?< / p>

由于预期会有大量连接(~10^6),因此无法为每个连接声明一个队列。所以我在这里遇到了麻烦。有什么建议?感谢。

1 个答案:

答案 0 :(得分:2)

我认为您需要查看RPC教程。根据您的描述,听起来这就是您想要做的事情。但是,这可能需要您声明比您想要的更多的队列。

以不同的方式接近这一点。我无法理解为什么你不仅要通过相同的交换机向生产者发送回复,而是将消费者消费的队列发送给生产者。

让生产者P1,P2和P3发送到路由密钥“abc.aaa.xyz”/“abc.bbb.xyz”/“abc.ccc.xyz”交换X1是没有意义的。然后将队列Q1,Q2和Q3绑定到X1,并使用绑定键“ .aaa。”/“ .bbb。”/“ .ccc。“或只是带有绑定键的Q1”abc。*。xyz“(我不知道你究竟想要什么,所以只是提出一些建议)。消费者C1,C2和C3消费了哪些

当消费者完成处理消息后,它将向X2发送一条消息,其中包含标识自身的路由键。生产者将从绑定到X2的队列中消耗。

我想说的是,您不希望从队列中读取多个消费者。只有一种情况,你想要它,这是一个任务队列。我不清楚你的用例,所以你可能想要一个任务队列。如果您这样做,那么您仍然不应该让您的生产者从与消费者相同的任务队列中读取。除了任务队列,您应该有一个消费者从一个队列中读取。您可能有多个队列进行一次交换,甚至有多个绑定从一个队列到一个交换。

我希望这会有所帮助