我们有一个应用程序将使用RabbitMQ,并有几个不同的队列用于在层之间传递消息。主题交换与RabbitMQ中的直接交换
最初,我打算使用多个直接交换机,每个消息类型都有一个交换机,但它看起来像使用不同的路由键绑定的单个主题交换队列将实现相同的目的。
有一次交换也似乎会更容易维护,但我想知道是否有任何好处(如果有的话)做到这一点比其他方式更好?
选项1,使用多个直接交流:
ExchangeA (type: direct)
-QueueA
ExchangeB (type: direct)
-QueueB
ExchangeC (type: direct)
-QueueC
选项2,使用单个主题交换:
Exchange (type: topic)
-QueueA (receives messages from exchange with routing key of "TypeA")
-QueueB (receives messages from exchange with routing key of "TypeB")
-QueueC (receives messages from exchange with routing key of "TypeC")
我同意。使用适当的路由密钥的多个队列更容易管理。想到选项1的唯一优点是可以在单独的硬件上托管多个交换机,从而实现垂直缩放。但是,如果你的硬件很不稳定,那么你可能永远都不需要采用这条路线。 – 2012-03-14 22:03:01
我认为使用Topic的好处在于,如果将来您需要将相同的消息发送到交换中的多个队列,那么您的选项2会更可取。 – gigi2 2014-04-03 18:02:38