因此我们决定在迁移到微服务架构时使用RabbitMQ作为消息/事件总线,但我们无法找到关于排队的最佳方式的明确答案,我们有两种选择:
一个主要交换机将是Fanout交换机,它又将消息传递到主队列以进行日志记录和其他目的,另一个子交换机将是主题交换并使用消息路由键将消息路由到每个所需队列.我们期望子交换机后面的队列数量是多少.这可以用这个图解释:
一个主交换,它将是一个主题交换,仍有一个主队列使用"#"路由密钥绑定到该交换.该主交换还将处理到其他子交换的主路由,因此路由密钥可能是"协议.#","赋值.#","消息.#",然后用于绑定多个主题子交换,每个都将处理子路由,因此一个子交换可能正在处理所有"赋值",绑定到该交换的队列可能被路由密钥绑定,如"assignments.accepted","assignments.deleted"......在这种情况下,我们感觉像每次交换的队列数量都会减少,它们会以某种方式在交换之间分配.
那么,哪种方案可能是最好的方法呢?RabbitMQ更快,开销更少.
请记住,所有队列,交换和绑定都将从即将发布或订阅的服务中即时完成.