我在使用 Confluent JDBC 连接器时遇到了非常奇怪的行为。我很确定它与 Confluent 堆栈无关,而是与 Kafka-connect 框架本身有关。
因此,我将offset.storage.file.filename
属性定义为默认值/tmp/connect.offsets
并运行我的接收器连接器。显然,我希望连接器在给定文件中保留偏移量(它在文件系统上不存在,但应该自动创建,对吧?)。文档说:
offset.storage.file.filename
用于存储连接器偏移量的文件。通过将偏移量存储在磁盘上,可以在单个节点上停止和启动独立进程,并从之前停止的位置恢复。
但是卡夫卡的行为方式完全不同。
- 它检查给定文件是否存在。
- 它不是,Kafka 只是忽略它并在 Kafka 主题中保留偏移量。
- 如果我手动创建给定文件,则无论如何读取都会失败(EOFException)并且偏移量会再次保留在主题中。
这是一个错误,还是更有可能是我不明白如何使用这种配置?我了解两种持久偏移量的方法之间的区别,并且文件存储更适合我的需求。