我有发布者,可以将信息发送到RabbitMQ中的不同队列中
$this->_channel->queue_declare('qwe.w', FALSE, TRUE, FALSE, FALSE, FALSE);
$this->_channel->queue_declare('qwe.q', FALSE, TRUE, FALSE, FALSE, FALSE);
$this->_channel->basic_publish(
$message,
'',
'qwe.q'
);
$this->_channel->basic_publish(
$message,
'',
'qwe.w'
);
如何使用通配符队列名称使用它们? 像这样的东西(下面的代码不起作用)
$this->_channel->basic_consume('qwe.#', '', FALSE, TRUE, FALSE, FALSE, 'function_name');
我需要的重要内容-即使消费者处于离线状态也不要丢失消息。
答案 0 :(得分:0)
RabbitMQ不支持通配符队列名称。但是,它确实支持Topic Exchanges,可以有效地为您提供相同的功能。
在此拓扑下,您将使用已经使用的路由密钥进行发布,但是将发布到主题交换(有一个名为amq.topic
的默认交换,也可以声明自己的交换)。然后,为订户创建队列。最后,您使用尝试用于订阅的通配符路由机制将队列绑定到主题交换。