发布网友 发布时间:2022-04-22 09:42
共1个回答
热心网友 时间:2023-05-10 22:30
目前的代码,一旦consumer获取到message,那么这个message就立刻从queue里面移除(自动的消息接收确认);但是如果还没有处理该message,worker被kill,那么这个消息就没有被成功处理;此外,一个consumer可能同时收到了多个消息,这些消息也相当于丢失;
此时,需要使用消息的手动确认机制,处理成功之后,通知rabbitmq服务器将消息删除;如果没有收到确认消息,改消息状态变成unacked,不会删除;如果rabbitmq重启或者当前client链接失效或者当前worker失效,unacked的消息会参与重新分配,有consumer重新处理;追问现在我有个需求是,使用rabbitmq通过发布订阅模式,如果开发的api接口需要更新,我想到的是取消所有客户端连接。请问有什么好办法实现吗