主题交换是唯一支持通配符的交换机吗?

时间:2013-02-26 23:48:29

标签: rabbitmq amqp

在尝试理解直接,扇出和主题交换之间的区别时,我想确认主题交换的优点是生产者推送到交换并指定完全特定的路由密钥,并且队列可以绑定到多个通过通配符路由密钥。例如话题推动......

$channel->basic_publish($msg, 'logs-exchange', 'error.critical.ram')

一个队列可以通知所有关键错误的随叫随到的团队会像...一样绑定。

$channel->queue_bind('on-call-team', 'logs-exchange', 'error.critical.*')

error.*.ram类似的队列会通知负责增加ram的sysops团队。

这是主题交换的正确用例吗?主题交换是唯一可以支持这种灵活性的交换吗?相反,主题和扇出交换都可以通过主题交换实现吗?

1 个答案:

答案 0 :(得分:2)

  

这是主题交换的正确用例吗,

是这次交换的绝对正确用法。你会发现它非常强大

  

并且主题交换是唯一可以支持这种灵活性的交换吗?

是的,类似的直接交换不支持通配符,因此在绑定时必须指定完整的路由密钥,否则它将不会接收消息。可能有使用主题交换作为基础的自定义消息,但我无法想到一个

  

相反,主题交换可以实现主题和扇出交换吗?

我不确定你的意思。是的,您可以使用相同的绑定密钥将多个队列绑定到交换机,因此它们都将收到相同的消息。但是,如果您不需要该功能,那么您也可以使用扇出交换本身。

此外,我有一个扇出交换,绑定到一些队列和主题交换。此交换的发布者使用路由密钥,即使扇区交换不需要它,也需要将其路由到的主题交换。这很好,因为它对我们引起主题交换问题的扇出没有影响