我刚开始学习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.*');
型
1条答案
按热度按时间bvjxkvbb1#
主题交换允许基于路由键中的XML模式更灵活地路由消息。
在您的示例中,有两个队列(adverts_create和adverts_edit)与名为adverts的主题交换相关联。路由键是advert.create和advert.edit。
如果你想将一条消息发送到多个匹配某个模式的队列中,那么在将消息发布到主题交换时,你确实可以在路由键中使用通配符。在RabbitMQ中,路由键遵循一个点分隔的层次结构,你可以使用通配符(*)来匹配该位置的任何单词。
例如,您的代码段:
字符串
这段代码会将消息发布到绑定到adverts交换的任何队列,该队列的路由关键字以advert.开头,后面还有一个单词。因此,advert.create和advert.edit队列都将在这种情况下接收消息。
只需确保队列使用适当的路由键模式正确绑定到交换机。