如果我将 Producer 的 Kafka 配置参数设置为:
1. retries = 3
2. max.in.flight.requests.per.connection = 5
那么很可能一个分区内的消息可能不在 send_order 中。
Kafka 是否采取任何额外步骤来确保分区内的消息仅保持发送顺序
或者
使用上述配置,是否可能在分区内出现乱序消息?
最佳答案
抱歉不行。
使用您当前的配置,由于您的 retries
,消息可能会无序到达。和 max.in.flight.requests.per.connection
设置..
与 retries
config 设置为大于 0,您将在以下情况下失去排序(只是一个随机数示例):
我可能是错的,但在这种情况下,即使使用
max.in.flight.requests.per.connection
也可能发生重新排序设置为 1 您可能会在代理故障转移的情况下丢失消息顺序,例如批次可以在前一个失败的批次确定它也应该发送给该经纪人之前发送给经纪人。关于
max.in.flight.requests.per.connection
和 retries
设置在一起甚至更简单 - 如果您对代理有多个未确认的请求,第一个失败的请求将无序到达。但是,请考虑到这仅与消息/批次由于某种原因未能确认的情况有关(发送给错误的经纪人,经纪人死亡等)
希望这可以帮助
关于apache-kafka - Kafka 是否保证具有任何配置参数值的单个分区内的消息排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36692113/