首先,我宣布交换,排队并将它们绑定到其他地方。我基本发布了一条消息到这个队列,所以队列中有一条消息。这时我启动我的消费者程序(autoAck = true)并调试它,当我运行basicConsume(xxx)时,消息丢失了!在我看来,当运行到方法nextDelivery()时,消费者会将basic.ack发送给代理,但事实上当我将声明一个消费者时,队列中的消息将被采用。为什么?有人告诉我,当rabbitmq从队列中删除消息时?在方法basicConsume()或nextDelivery()之后? THX ~~~
答案 0 :(得分:3)
autoAck = true
因为这个
你告诉RabbitMQ在消费时自动确认消息。承认一条消息告诉RabbitMQ它已被处理,RabbitMQ现在可以删除它。
如果要在完成处理后手动确认消息,请将autoAck设置为false。