向Kafka异步发送消息是否会影响消息排序



这是我对异步向Kafka发送消息并实现回调函数的理解:

场景:Producer将接收4批要发送的消息(为了简单起见,发送到同一分区(。

生产商发送批次A.

生产商发送批次B.

生产者收到经纪人的回复并执行回调——批次A不成功且可重试,批次B成功,因此生产者再次发送批次A。

这不会干扰消息排序吗?因为现在卡夫卡在B之后收到了A?

如果您需要在分区内进行消息排序,您可以使用幂等生产者:

enable.idempotence=true
akcs=all
max.in.flight.requests.per.connection<=5 
retries>0

这将解决生产商的潜在重复,并维持订单。

如果您不想使用幂等生产者,那么设置max.in.flight.requests.per.connection=1就足够了。这是生产商端未确认的批次数。这意味着在收到对A的确认之前不会发送批次B。

最新更新