是否可以将一条消息发送给多个交换器?

问题描述 投票:0回答:1

我刚刚开始研究rabbit,出现了以下问题:如果我有一个名称为

adverts
的交换TOPIC类型和一个队列:

adverts_create (routing_key: `advert.create`)
adverts_edit (routing_key: `advert.edit`)

那么我可以同时向多个队列发送消息吗?像这样的东西:

$msg = new AMQPMessage('text');
$channel->basic_publish($msg, 'adverts', 'advert.*');
rabbitmq php-amqplib
1个回答
0
投票

主题交换允许基于路由键中的通配符模式更灵活地路由消息。

在您的示例中,您有两个与名为 adverts 的主题交换关联的队列(adverts_create 和 adverts_edit)。路由键是 advert.create 和 advert.edit。

如果您想将消息发送到匹配某种模式的多个队列,那么在将消息发布到主题交换器时,您确实可以在路由键中使用通配符。在 RabbitMQ 中,路由键遵循点分隔的层次结构,您可以使用星号 (*) 作为通配符来匹配该位置的任何单词。

例如,您的代码片段:

$msg = new AMQPMessage('text');
$channel->basic_publish($msg, 'adverts', 'advert.*');

此代码将使用以 advert 开头的路由键将消息发布到绑定到 adverts 交换的任何队列。后面还有一个词。因此,在这种情况下,advert.create 和 advert.edit 队列都会收到消息。

只需确保队列使用适当的路由密钥模式正确绑定到交换机。

© www.soinside.com 2019 - 2024. All rights reserved.