1

所以我们会有一个看起来像这样的主题交换

{class}.{genus}

所以我们有一些与主题绑定的消费者

mammal.*

(或bird.*等)

现在假设稍后我们想要包含物种信息,所以主题交换现在看起来像这样:

{class}.{genus}.{species}

现在老消费者坏了:(

然而,他们本可以绑定为

mammal.*.#

并且能够听到未来添加的任何信息。然而,这是我的团队自己提出来的,这让我问:

  • 这是好习惯吗?
  • 我应该注意这方面的权衡吗?
  • 是否有另一种方法让生产者能够在不破坏现有消费者的情况下添加信息,而不需要发布到多个交易所?
4

1 回答 1

0

通常,如果您需要最大程度地控制队列传递并希望在 rabbit 中执行逻辑,那么您应该考虑header exchange

通常,当我们编写发布代码时,我们确切地知道它需要进入哪个队列,因此您是否要使用路由键或布尔值来执行此操作可能不会有太大区别,具体取决于您的应用程序。

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

请记住,您的消费者将被订阅,通常是静态的,订阅到交换交付的队列。也mammal.#mammal.*.#(参见:ref)相同

于 2013-03-06T20:51:28.767 回答