假如我们的kafka集群可能有一些网络问题,这个时候 producer写数据的时候可能会出现一些问题,那么kafka内部就会有失败重试机制,但是面临了两个问题

1. 消息乱序

有的时候一些leader切换的时候,需要进行重试,设置retries即可,但是消息重试会导致重复发送的问题,比如说网络抖动导致producer以为没成功,其实是成功了的,这个时候就会出现消息重复的问题

2. 消息乱序

消息重试是可能会导致消息乱序的,因为可能排在你后面的消息都发送出去了,所以可以使用“max.in.flight.requests.per.connection”的参数设置为1,这样可以保证producer同一时间只能发送一条消息

3. 重试间隔

重试间隔默认是100ms,用“retry.backoff.ms” 300ms差不多了

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐