如何使主题交换可扩展

时间:2013-03-06 16:42:27

标签: rabbitmq amqp

所以我们将有一个类似

的主题交换
{class}.{genus}

所以我们有一些与主题

绑定的消费者
mammal.*

(或bird.*等)

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

{class}.{genus}.{species}

现在老消费者已经破产了:(

但是他们可以绑定为

mammal.*.#

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

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

1 个答案:

答案 0 :(得分:0)

通常,如果您需要对队列传递进行最大程度的控制并希望在兔子中执行逻辑,那么您应该考虑标头交换

通常当我们对发布进行编码时,我们确切地知道它需要去哪个队列,因此,根据您的应用程序,是否要使用路由键或布尔值来执行此操作可能没有太大区别。

这引出了另一个需要注意的设计考虑因素:你是否想在兔子中使用路由逻辑。有人喜欢使用简单的路由键以及直接或主题交换,专注于灵活的消费者。很明显,很难猜出什么对你的应用是最好的。

请记住,您的消费者将通常静态地订阅交换所提供的队列。 mammal.#也与mammal.*.#相同(请参阅:ref