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

Rabbitmq 主题交换是唯一支持通配符的交换吗?,rabbitmq,amqp,Rabbitmq,Amqp,在试图理解直接交换、扇出交换和主题交换之间的区别时,我想确认主题交换的优点是生产者推送到一个交换并指定一个完全特定的路由键,队列可以通过通配符绑定到多个路由键。e、 话题推到 $channel->basic_publish($msg, 'logs-exchange', 'error.critical.ram') 一个队列将通知待命团队所有关键错误,该队列将绑定为 $channel->queue_bind('on-call-team', 'logs-exchange', 'error

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

$channel->basic_publish($msg, 'logs-exchange', 'error.critical.ram')
一个队列将通知待命团队所有关键错误,该队列将绑定为

$channel->queue_bind('on-call-team', 'logs-exchange', 'error.critical.*')
还有一个类似的队列,带有
error.*.ram
将向负责增加ram的sysops团队发送消息

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

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

是的,此交换的用法绝对正确。你会看到它非常强大

主题交换是唯一支持这种灵活性的交换吗

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

相反,主题交换和扇出交换都可以通过主题交换实现吗

我不知道你在这里是什么意思。是的,您可以使用相同的绑定密钥将多个队列绑定到exchange,这样它们都将接收相同的消息。但是如果您不需要该功能,那么您也可以使用扇出交换本身

此外,我还有一个绑定到某些队列的扇出交换和一个主题交换。此exchange的发布者使用路由密钥,即使扇出exchange不需要路由密钥,但路由到的主题exchange需要路由密钥。这是好的,因为它对扇出没有影响,我们的主题交换出现了问题