【问题标题】:when rabbitmq delete message from queue?当rabbitmq从队列中删除消息?
【发布时间】:2015-12-20 16:01:50
【问题描述】:

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

【问题讨论】:

    标签: rabbitmq


    【解决方案1】:

    autoAck = true

    因为这个

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

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

    【讨论】:

    • 感谢德里克·贝利!我昨天阅读了源代码。我发现当我启动消费者而不运行 nextDelivery() 时,它将获取消息并保存在本地队列中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 2023-03-09
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多