我有一个关于第三个 RabbitMQ 教程的问题。我正在尝试实现类似的东西,除了不能保证消费者在生产者向交易所发送消息时正在运行。
所以,我有我的生产者将消息发布到扇出交换:
$channel->exchange_declare('my_exchange', 'fanout', false, false, false);
$channel->basic_publish('my_message', 'my_exchange');
在我的发布者中,我声明了队列,然后我将其绑定到交换:
list($queueName,, ) = $channel->queue_declare("", false, false, true, false);
$channel->queue_bind($queueName, 'my_exchange');
这就是我的问题的根源。教程说:
如果没有队列绑定到交换器,消息将丢失,但这对我们来说没关系;如果没有消费者在监听,我们可以安全地丢弃消息。
有没有办法以某种方式保留这些消息,所以当消费者启动时,它会访问以前发送的消息?我想出如何做到这一点的唯一方法是在我的生产者和发布者中声明相同的队列,但这有点违背了为不同消费者提供交换和单独队列的目的。