5.4. 可靠性保证
幂等性对于精确写入单个分区很有用。事务与 idempotence 一起使用时,精确允许在多个分区间写入一次。
使用相同事务 ID 发送的事务消息只生成一次,因此只会所有都成功写入到相应的日志,或所有都没有写入。
# ... enable.idempotence=true max.in.flight.requests.per.connection=5 acks=all retries=2147483647 transactional.id=UNIQUE-ID 1 transaction.timeout.ms=900000 2 # ...
为保持事务保证,选择 transactional.id 非常重要。每个事务 ID 都应该用于一组唯一的主题分区。例如,这可以通过使用主题分区名称外部映射到事务 ID 来实现的,也可以使用避免冲突的功能从主题分区名称计算事务 ID。