首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >面试题102:如何确认正确发送到RabbitMQ?如何确认消费者消费了消息?

面试题102:如何确认正确发送到RabbitMQ?如何确认消费者消费了消息?

作者头像
爪哇缪斯
发布2023-05-10 09:46:00
发布2023-05-10 09:46:00
6560
举报
文章被收录于专栏:爪哇缪斯爪哇缪斯

【生产者确认发送成功】

  • 将信道设置成confirm模式,则所有在信道上发布的消息都会被指派一个唯一的ID。
  • 一旦消息被发送到队列后,或者消息被写到磁盘上,信道就会发送一个确认信息(包含消费的唯一ID)给生产者。
  • 如果RabbitMQ发生了内部错误从而导致了消息的丢失,那么会发送一条NACK消息。
  • confirm模式是异步的,生产者在等待确认的同时,可以继续发送消息。当确认消息到达生产者,生产者的回调方法就会被触发来处理确认消息。

【消费者消费成功】

  • 消费者接收每一条消息后,都必须进行确认。只有消费者确认了消息,RabbitMQ才会安全地把消息从队列中删除。
  • 此处没有用到超时机制,RabbitMQ仅通过Consumer的连接是否中断来确认是否需要重新发送消息,也就是说,只要连接不中断,那么RabbitMQ会给消费者足够长的时间来处理消息。从而保证数据的最终一致性。
  • 如果消费者接收到消息,在确认之前断开了连接或者取消了对RabbitMQ的订阅,那么RabbitMQ会认为消息没有被分发,然后,重新将消息发送给下一个订阅的消费者,此处就会造成消息被重复的消费,因此需要消费者端进行消息去重的逻辑处理。
  • 如果消费者接收到消息却没有确认消息,连接也没有断开,那么RabbitMQ会认为消费者是处于繁忙中,那么,也不会将消息重新发送到别的订阅的消费者。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爪哇缪斯 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档