首页 > 试题广场 >

在 Kafka 中要实现端到端的“恰好一次”处理(消费者读取

[单选题]
在 Kafka 中要实现端到端的“恰好一次”处理(消费者读取源主题、处理后写入目标主题,同时保证目标主题无重复且位移与结果原子提交),下列哪种做法是必要且正确的?
  • 仅将生产者配置 enable.idempotence=true
  • 使用带事务的生产者(设置 transactional.id),在同一事务中写入结果并通过 sendOffsetsToTransaction 提交消费位移,消费者使用 isolation.level=read_committed
  • 将生产者 acks 设置为 0 以减少重复
  • 禁用消费者自动提交 enable.auto.commit=false 即可
单分区生产者幂等也是不够的,依旧可能消息重复,生产者实例发生消息后broker同步完成并返回ack但生产者此时宕机重启生产者实例会以新的ProducerID重新发生该消息,此时消息重复;因此还需要生产者事务以隔离僵尸实例
发表于 今天 10:15:46 回复(0)