0

我无法理解 RabbitMQ 中的路由。考虑我有几个生产者(我们称他们为客户端),它们向队列生成消息。例如,客户端A,BC发送消息到队列X1

让消费者响应所有将响应发送回队列的消息。例如,消费者从队列X1中获取消息,做某事,然后向队列发送响应X1

客户端如何A确定X1发送给它的队列消息在哪里以及发送给客户端的消息在哪里BC

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

4

1 回答 1

2

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

以不同的方式接近这一点。我不明白为什么您不仅要通过同一个交换器,还要通过消费者正在消费的同一个队列向生产者发送回复。

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

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

我要说明的一点是,您不希望多个消费者从队列中读取。只有一种情况是您想要的,那就是任务队列。我不清楚您的用例,因此您可能需要一个任务队列。如果你这样做了,那么你不应该让你的生产者和你的消费者从同一个任务队列中读取。除了任务队列之外,您还应该让一个消费者从一个队列中读取。您可能有许多队列到一个交换,甚至有许多绑定从一个队列到一个交换。

我希望这有帮助

于 2012-10-31T15:04:22.270 回答