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 # ...
如果您选择不使用 acks=all,并且由于性能成本而禁用幂等性,请将 in-flight (忽略)请求的数量设置为 1 以保持排序。否则,只有在 Message-B 已写入代理后 Message-A 才会成功。
订购没有幂等的交付
# ... enable.idempotence=false 1 max.in.flight.requests.per.connection=1 2 retries=2147483647 # ...