You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

异步发送消息至Kafka并使用回调时,是否会影响消息顺序?

Kafka异步发送重试是否会打乱同分区消息顺序?

结论:这种场景下肯定会打乱同分区的消息顺序

你描述的场景里,生产者先发batch A再发batch B,正常情况下同分区消息会严格按发送顺序写入Broker日志。但当batch A发送失败触发重试、而batch B已经成功写入时,重试的batch A会在batch B之后到达Broker,Broker会把它追加到分区日志末尾,最终就会出现B在前、A在后的情况,完全颠倒了原本的发送顺序。

如果你的业务强依赖消息顺序,可以通过两种方式避免:

  • 关闭自动重试(将生产者参数retries设为0),在回调里自己实现有序重试逻辑——比如必须等重试的batch A发送成功后,再继续发送后续的batch C、D,不能在A重试期间发送其他批次。
  • 将生产者参数max.in.flight.requests.per.connection设为1,这样生产者在收到前一个请求的响应前,不会发送下一个请求,从根源上杜绝乱序,但会降低吞吐量。

内容的提问来源于stack exchange,提问作者Ankit Sahay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 04:35:28