我是 RabbitMQ 的新手,这让我很困惑。我已经设置了一个直接交换,并且不同的队列在这个交换上订阅了不同的路由密钥。我想要的是,如果一条消息使用一个路由键发布,它只会从一个订阅者那里消费,无论有多少队列订阅了该路由键。
当前场景:
交换(类型:直接)
-QueueA1 (receives message A from exchange with routing key of "TypeA")
-QueueA2 (also receive message A from exchange with routing key of "TypeA")
-QueueB (doesn't receive message A because it subscribes to key "TypeB")
Run Code Online (Sandbox Code Playgroud)
期望:
-QueueA1 (receives message A from exchange with routing key of "TypeA")
-QueueA2 (doesn't receive message A because it's already consumed by QueueA1)
-QueueB (doesn't receive message A because it subscribes to key "TypeB")
Run Code Online (Sandbox Code Playgroud)
我需要使用不同的交易所吗?我如何实现所需的场景?
您可以通过使用单个QueueA订阅此队列的多个消费者来实现您想要的:
Direct exchange
|
|-- ["TypeA"]--> QueueA
| |-- Consumer A1
| `-- Consumer A2
|
`-- ["TypeB"]--> QueueB
Run Code Online (Sandbox Code Playgroud)
在这种情况下,排队的消息QueueA将只传递给一个消费者。然而,获取消息的消费者是未定义的:它们以循环方式被挑选。
| 归档时间: |
|
| 查看次数: |
596 次 |
| 最近记录: |