Kafka生产者异步发送如何保证消息不丢失

问题产生原因

  发送基本标准
  1.达到batch size 触发发送
  2.linger.ms 时间达到触发 
  这两个参数配合好可以很好的控制生产者发送频率,但也带来了一些问题,失败回调获取不到数据重发,重试依然可能失败,所以一般不配置重试,或象征性一次。

  解决思路:发送前预存一条有状态消息到数据库,配合生产者回调来确保消息不丢失,会导致有重复消息,消费者必须自己保证幂等性。

  有状态消息指 待确认  发送中 发送成功  废弃 超过重发次数 这里可以根据业务自己定义。
  段时间内消息一直发送中状态的认为是没有发送到Kafka,重发送到队列。可以限定重发次数,比如说5次,还是不行就要触发告警,报送到中台,人工处理等等。

  如果消息允许丢失,则大可不必。
posted @   苏子墨  阅读(85)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示