我可以将消息从队列路由到rabbitmq上的交换机吗?

时间:2014-03-29 12:14:14

标签: queue rabbitmq

我担心回复是一个很大的问题,但我会揭露我试图实施的情景。也许有人看到了更好的方法。

我们有一个扇出交换,表示N个用户之间的对话(conv1) 我们有两个名为user1,user2的交换,绑定到conv1,其中conv1是源, 每个用户交换被绑定到conv1,其中conv1作为目的地,具有路由密钥conv1

如果我们使用路由密钥" conv1"通过交换用户1发送消息,则该消息将到达连接到user1和user2交换的所有消费者。

用户应该能够让多个消费者听取他的交换

我需要做的是,当没有消费者连接到用户交换机时,这些消息可以排队,并在连接时通过用户交换机接收。我的第一个想法是在用户交换和会话交换之间放置一个队列,因此流程将如下:

consumer-user1 - > tempqueue - > user1 - > conv1 - > queueuser2 - > user2 - >消费者用户2

但似乎无法制作绑定queueuser2 - > user2在那个方向。

如果我让消费者​​直接听这个queueuserN,通过将它们绑定到conv1而不是绑定用户交换:

consumer-user1 - > tempqueue - > user1 - > conv1 - > queueuser2 - >消费者用户2

然后(消极地)消息只到达N个可能连接的消费者中的一个。

有什么办法可以吗?似乎铲子插件就是这样做的,但是经纪人之间......

1 个答案:

答案 0 :(得分:3)

您可以使用alternate exchange RabbitMQ extension:其目的正是重新路由无法发送到任何队列的邮件,否则会丢失。