kafka消息顺序问题
虽然kafka保证了分区的有序,但是如果生产者消息重试可能会对消息顺序产生影响。
在发送消息时,本应该先发送A在发送B,但是A发送失败了,B发送成功了,A在重试之后发送成功了,就导致了本来顺序应该是AB而变成了BA,如果需要严格的顺序,可以在生产者中配置参数max.in.flight.requests.per.connection
为1,该参数的作用是设置每个连接的最大请求个数,默认5,如果将该值设置为1,可以保证在出现重试的情况下依然保证消息是按照发送顺序来写入服务器的
使用
max.in.flight.requests.per.connection=1
会降低吞吐量