当rabbitmq从队列中删除消息时?

chr*_*lin 2 rabbitmq

首先,我声明交换,排队并将它们绑定在一起。我基本将消息发布到此队列,因此队列中有您一条消息。这时我启动我的使用者程序(使用autoAck = true)并调试它,当我运行到basicConsume(xxx)时,消息丢失了!在我看来,消费者在运行方法nextDelivery()时,会将basic.ack发送给代理,但是实际上,当我声明消费者时,将使用队列中的消息。为什么?有人可以告诉我Rabbitmq从队列中删除邮件吗?在basicConsume()或nextDelivery()方法之后???谢谢~~~

Der*_*ley 5

autoAck = true

因为这

您告诉RabbitMQ在使用该消息时自动确认该消息。确认消息告诉RabbitMQ它已被处理,RabbitMQ现在可以删除它。

如果要在处理完消息后手动确认消息,请将autoAck设置为false。

  • 谢谢德里克·贝利!我昨天读过源代码。我发现当我启动消费者而不运行 nextDelivery() 时,它会获取消息并保存在本地队列中。 (2认同)