Kafka生产者异步发送如何保证消息不丢失
问题产生原因
发送基本标准
1.达到batch size 触发发送
2.linger.ms 时间达到触发
这两个参数配合好可以很好的控制生产者发送频率,但也带来了一些问题,失败回调获取不到数据重发,重试依然可能失败,所以一般不配置重试,或象征性一次。
解决思路:发送前预存一条有状态消息到数据库,配合生产者回调来确保消息不丢失,会导致有重复消息,消费者必须自己保证幂等性。
有状态消息指 待确认 发送中 发送成功 废弃 超过重发次数 这里可以根据业务自己定义。
段时间内消息一直发送中状态的认为是没有发送到Kafka,重发送到队列。可以限定重发次数,比如说5次,还是不行就要触发告警,报送到中台,人工处理等等。
如果消息允许丢失,则大可不必。
----------------------------------------------------------------
本文来自博客园,作者:苏子墨,转载请注明原文链接:https://www.cnblogs.com/li-xiaotian/p/17147983.html

浙公网安备 33010602011771号