【发布时间】:2015-10-11 06:10:16
【问题描述】:
我很难理解 RabbitMQ 中不同类型的绑定(交换)。其实我想实现某种模式,也想了解哪种交换/绑定/路由键组合适合这种模式。
我有以下内容:生成 3 种消息的生产者,3 个消费者,每种消息一个。生产者 P 生成 A、B 和 C 消息。消费者收到如下消息:ConsumerA只接收A消息,Consumer B只接收B消息,ConsumerC只接收C消息。这工作得很好。
然后我添加了第四个消费者 D,它应该接收 B 和 C 消息。当 B 消息生成时,消费者 B 和 D 都应该收到它。同样,当产生 C 消息时,应通知 C 和 D 消费者。取而代之的是,实际发生的是: 1. 消息 A 总是只发送给消费者 A(这没关系)。 2.消息B交替发送给消费者B和D(一次只给B,一次只给D,一次只给B,一次只给D等等)(错误) 3. 消息 C 交替发送给消费者 C 和 D(一次只发送给 C,一次只发送给 D,一次只发送给 C,一次只发送给 D,依此类推)(错误)
我做了一些阅读,我明白这是所谓的循环式调度,但这对我来说似乎没用。我希望能够将相同的消息传播给所有对此感兴趣的消费者。如果有 10 个消费者对一条消息感兴趣,我不希望只有其中一个接收消息而其他 9 个对此一无所知,我希望每次所有 10 个消费者都收到相同的消息。这对不同的模式/交换类型是否可行?我是否遗漏了一些关于 RabbitMQ 如何工作的明显内容?
这里有一些相关代码,感兴趣的人可以参考:http://pastebin.ca/3070838
(A表示红利,B表示游戏,C表示支付)
【问题讨论】: