在试图理解直接交换,扇出交换和主题交换之间的区别时,我想确认主题交换的优点是生产者推送到交换并指定了完全特定的路由键,并且队列可以通过以下方式绑定到多个路由键:通配符。例如主题推动...
$channel->basic_publish($msg, 'logs-exchange', 'error.critical.ram')
一个会通知呼叫团队有关所有严重错误的队列将像...那样绑定
$channel->queue_bind('on-call-team', 'logs-exchange', 'error.critical.*')
并且带有
error.*.ram
的类似队列将通知负责增加ram的sysops团队。这是主题交换的正确用例,并且主题交换是唯一可以支持这种灵活性的交换吗?相反,话题交换和主题交换都可以通过话题交换实现吗?
最佳答案
这是主题交流的正确用例吗?
是的,此交换绝对正确。您会发现它非常强大
主题交换是唯一可以支持这种灵活性的交换吗?
是的,类似的直接交换将不支持通配符,因此在绑定到它时必须指定完整的路由密钥,否则它将无法接收消息。可能有一些以主题交流为基础的自定义消息,但我想不到
相反,话题交换和主题交换都可以通过话题交换实现吗?
我不确定你在这里是什么意思。是的,您可以使用相同的绑定密钥将多个队列绑定到交换,因此它们都将收到相同的消息。但是,如果您不需要该功能,则不妨使用扇出交换机本身。
另外,我有一个绑定到某些队列的扇出交换和一个主题交换。进行此交换的发布者使用路由密钥,即使扇出交换并不需要它,主题路由也不需要它。这很好,因为它对扇出没有影响,导致我们无法进行主题交流