rabbitmq 是否可以将一个消息发送到多个交换机?

qybjjes1  于 12个月前  发布在  RabbitMQ
关注(0)|答案(1)|浏览(248)

我刚开始学习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.*');

bvjxkvbb

bvjxkvbb1#

主题交换允许基于路由键中的XML模式更灵活地路由消息。
在您的示例中,有两个队列(adverts_create和adverts_edit)与名为adverts的主题交换相关联。路由键是advert.create和advert.edit。
如果你想将一条消息发送到多个匹配某个模式的队列中,那么在将消息发布到主题交换时,你确实可以在路由键中使用通配符。在RabbitMQ中,路由键遵循一个点分隔的层次结构,你可以使用通配符(*)来匹配该位置的任何单词。
例如,您的代码段:

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

字符串
这段代码会将消息发布到绑定到adverts交换的任何队列,该队列的路由关键字以advert.开头,后面还有一个单词。因此,advert.create和advert.edit队列都将在这种情况下接收消息。
只需确保队列使用适当的路由键模式正确绑定到交换机。

相关问题