5.3. 排序交付
幂等生产者避免重复,因为消息会完全传递一次。将 ID 和序列号分配给消息以确保交付顺序,即使在出现故障时也是如此。如果您使用 acks=all
进行数据一致性,使用 idempotency 对排序交付有意义。默认情况下,为制作者启用 idempotency。启用 idempotency 后,您可以将并发动态请求数设置为最多 5 个消息排序。
使用 idempotency 排序交付
# ... enable.idempotence=true 1 max.in.flight.requests.per.connection=5 2 acks=all 3 retries=2147483647 4 # ...
如果您选择不使用 acks=all
并禁用 idempotency,因为性能成本,请将 in-flight (未确认)请求数设置为 1 以保留排序。否则,在 Message-B 写入代理后,Message-A 才会成功。
在没有 idempotency 的情况下排序交付
# ... enable.idempotence=false 1 max.in.flight.requests.per.connection=1 2 retries=2147483647 # ...