Rabbitmq 如何使话题交流具有可扩展性

Rabbitmq 如何使话题交流具有可扩展性,rabbitmq,amqp,Rabbitmq,Amqp,因此,我们将有一个主题交换,看起来像 {class}.{genus} 因此,我们有一些消费者与这一主题紧密相关 mammal.* (或鸟。*等) 现在假设稍后我们要包括物种信息,因此主题交换现在如下所示: {class}.{genus}.{species} 现在,旧的消费者已经破产了:( 然而,他们本可以像以前那样约束自己 mammal.*.# 并且能够倾听未来添加的任何信息。然而,这是我的团队自己想到的,这让我问: 这是好的做法吗 我是否应该注意这方面的权衡 是否有另一种方法让制作人

因此,我们将有一个主题交换,看起来像

{class}.{genus}
因此,我们有一些消费者与这一主题紧密相关

mammal.*
(或
鸟。*
等)

现在假设稍后我们要包括物种信息,因此主题交换现在如下所示:

{class}.{genus}.{species}
现在,旧的消费者已经破产了:(

然而,他们本可以像以前那样约束自己

mammal.*.#
并且能够倾听未来添加的任何信息。然而,这是我的团队自己想到的,这让我问:

  • 这是好的做法吗
  • 我是否应该注意这方面的权衡
  • 是否有另一种方法让制作人能够在不破坏现有消费者的情况下添加信息,而不向多个交易所发布

典型地,如果您需要对队列传递进行最大控制,并且希望在兔子中执行逻辑,那么您应该考虑<强>标题交换< /强> ./p> 通常,当我们对发布进行编码时,我们确切地知道它需要转到哪个队列,因此,根据应用程序的不同,使用路由键还是布尔值来执行这一操作可能没有多大区别

这带来了另一个需要注意的设计考虑因素:您是否希望在rabbit中使用路由逻辑。有些人更喜欢使用简单的路由键和直接或主题交换,关注灵活的消费者。显然,很难猜测什么最适合您的应用程序


请记住,您的消费者将被订阅到exchange传递到的队列中,通常是静态订阅的。另外,
emulator.#
emulator.*相同。#
(请参阅:)

RabbitMQ在实际操作中指出,头交换已被弃用,应使用主题-您同意这一点,还是我应该注意到头有任何困难?