5.3. 排序交付

幂等的制作者避免重复,因为消息准确传送一次。ID 和序列号分配给消息,以确保交付的顺序,即使出现失败时也是如此。如果您将 acks=all 用于数据一致性,使用 idempotency 有助于排序交付。默认情况下,为制作者启用幂等性。启用 idempotency 后,您可以将并发内请求数量设置为最多 5 个,以便保留消息排序。

使用 idempotency 排序交付

# ...
enable.idempotence=true 1
max.in.flight.requests.per.connection=5 2
acks=all 3
retries=2147483647 4
# ...

1
设置为 true 以启用幂等制作者。
2
通过幂等交付 in-flight 请求的数量可能大于 1,同时仍提供消息排序保证。默认值为 5 个动态请求。
3
acks 设置为 所有
4
设置重新发送失败消息请求的尝试次数。

如果您选择不使用 acks=all,并且由于性能成本而禁用幂等性,请将 in-flight (忽略)请求的数量设置为 1 以保持排序。否则,只有在 Message-B 已写入代理后 Message-A 才会成功。

订购没有幂等的交付

# ...
enable.idempotence=false 1
max.in.flight.requests.per.connection=1 2
retries=2147483647
# ...

1
设置为 false,以禁用幂等的制作者。
2
将动态请求数设置为正好 1