我正在将RMQ集成到我的项目中,以便实现工作队列。
我理解如果模块成功,它会调用ack方法,因此RMQ会知道它。
失败怎么办?
我读到只有当连接或频道关闭时,RMQ知道我们已经失败并重新将消息推送到队列。
但是,每当我遇到内部错误时,我都希望让RMQ重新推送消息,无论我是否崩溃(例如,无法插入数据库,我优雅地处理它而不会崩溃但是我想要整个工作重新尝试。)
我是否必须再次手动关闭并打开频道才能触发?
答案 0 :(得分:1)
您可以使用否定ACK或拒绝。信息here。
AMQP规范定义了允许的basic.reject方法 客户拒绝个人,传递信息,指导 经纪人要么丢弃它们,要么将它们重新排队。