【问题标题】:How to send consume task with wildacard queue name in RabbitMQ?如何在 RabbitMQ 中发送带有通配符队列名称的消费任务?
【发布时间】:2018-08-13 16:45:13
【问题描述】:

我有发布者,它将信息发送到 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');

我需要的重要一点 - 即使消费者离线,也不要丢失消息。

【问题讨论】:

    标签: php rabbitmq


    【解决方案1】:

    RabbitMQ 不支持通配符队列名称。但是,它确实支持Topic Exchanges,这实际上为您提供了相同的功能。

    在此拓扑下,您将使用已在使用的路由密钥进行发布,但您将发布到主题交换器(有一个名为 amq.topic 的默认交换器,或者您可以声明自己的交换器)。然后,您为订阅者创建队列。最后,您使用您尝试用于订阅的通配符路由机制将队列绑定到主题交换。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-26
      • 1970-01-01
      • 2013-02-24
      • 1970-01-01
      • 1970-01-01
      • 2019-12-23
      • 1970-01-01
      相关资源
      最近更新 更多