Kafka 源连接器中的恰好一次语义

exactly once semantics in Kafka source connector

阅读 Kafka 幂等操作和事务后,我想看看 Kafka 源连接器是否使用它们中的任何一个以确保恰好一次语义。

经过一点点阅读,我发现源连接器使用了某种 "offset" 的 is own 来存储它所做的最后一个操作,然后我看到 Debezium source connector for MongoDB只能实现至少一次语义

所以我的问题是为什么 MongoDB 源连接器不能保证 exactly-once 语义?如果连接器可以通过事务将其偏移量与每条消息一起提交,它可以确保消息和偏移量都在 Kafka 内部,从而保证恰好一次语义。

请参阅 KIP-618 了解源连接器,以及 318 使连接器的生产者幂等

Kafka 是一个仅附加日志。如果作为正常消费者操作的一部分,源连接器在产生事件和提交偏移量之间死亡,那么消费者可能需要重置回最后未提交的偏移量