在尝试理解直接交换、扇出交换和主题交换之间的区别时,我想确认主题交换的优点是生产者推送到交换并指定完全特定的路由键,并且队列可以通过以下方式绑定到多个路由键通配符。例如主题推向...
$channel->basic_publish($msg, 'logs-exchange', 'error.critical.ram')
Run Code Online (Sandbox Code Playgroud)
一个向待命团队发送有关所有严重错误的消息的队列将像这样绑定......
$channel->queue_bind('on-call-team', 'logs-exchange', 'error.critical.*')
Run Code Online (Sandbox Code Playgroud)
类似的队列error.*.ram将向负责增加内存的系统操作团队发送消息。
这是主题交换的正确用例吗?主题交换是唯一可以支持这种灵活性的交换吗?相反,主题交换和扇出交换都可以通过主题交换来实现吗?
这是主题交换的正确用例吗?
是的,此交换的用法绝对正确。你会发现它非常强大
主题交易所是唯一能够支持这种灵活性的交易所吗?
是的,类似的直接交换不支持通配符,因此您在绑定时必须指定完整的路由密钥,否则它将不会接收消息。也许有使用主题交换作为基础的自定义消息,但我无法立即想到
相反,主题交换和扇出交换都可以通过主题交换来实现吗?
我不确定你在这里的意思。是的,您可以使用相同的绑定密钥将多个队列绑定到交换器,这样它们都会收到相同的消息。但如果您不需要该功能,那么您不妨使用扇出交换本身。
另外,我有一个扇出交换器,它绑定到一些队列和一个主题交换器。此交换的发布者使用路由密钥,即使扇出交换不需要它,但它路由到的主题交换却需要它。这很好,因为它对扇出没有影响,因为我们给主题交换带来了问题