5.4. 可靠性保证
在对单个分区进行一次写入一次,idempotence 非常有用。事务与 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 来实现。