如果我在Producer中将Kafka配置参数设置为:
1. retries = 3
2. max.in.flight.requests.per.connection = 5
然后很可能一个分区中的消息可能不在send_order中。
Kafka是否采取任何额外步骤以确保分区中的邮件仅保留在已发送的顺序中 要么 使用上述配置,可能会在分区内出现乱序消息吗?
答案 0 :(得分:11)
不幸的是,没有。
根据您的当前配置,由于您的retries
和max.in.flight.requests.per.connection
设置,有可能会出现无序消息..
如果retries
配置设置为大于0,则在以下情况下将丢失排序(仅使用随机数的示例):
我可能错了,但在这种情况下,即使max.in.flight.requests.per.connection
设置为1,也可能发生重新排序,如果代理故障转移,您可能会丢失消息顺序,例如批次可以比先前失败的批次更早地发送到代理,并且它也应该转到该代理。
关于max.in.flight.requests.per.connection
和retries
被设置在一起它甚至更简单 - 如果您有多个未确认的请求到代理,第一个失败的请求将无序到达。
但请注意,这仅与消息/批次由于某种原因未能确认的情况有关(发送给错误的经纪人,经纪人死亡等)。
希望这有帮助