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

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

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

自动确认=真

因此

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


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

谢谢德里克·贝利!我昨天读了源代码。我发现当我启动一个消费者而不运行nextDelivery()时,它将接收消息并保存在本地队列中。