我正在设置一个 Kafka Connect 分布式模式应用程序,该应用程序将是一个 Kafka 到 S3 管道。我正在使用 Kafka 0.10.1.0-1 和 Kafka Connect 3.1.1-1。到目前为止,事情进展顺利,但对于我正在使用的大型系统而言,重要的一个方面需要了解 Kafka -> FileSystem 管道的偏移信息。根据文档,offset.storage.topic
配置将是分布式模式应用程序用于存储偏移信息的位置。考虑到 Kafka 如何在“新”Kafka 中存储消费者偏移量,这是有道理的。但是,在使用 FileStreamSinkConnector 进行一些测试后,没有任何内容被写入 myoffset.storage.topic
默认值:connect-offsets
.
具体来说,我使用 Python Kafka 生产者将数据推送到主题,并使用 Kafka Connect 和 FileStreamSinkConnect 将数据从主题输出到文件。这可以正常工作并按照我期望连接器的行为表现。此外,当我停止连接器并启动连接器时,应用程序会记住主题中的状态并且没有数据重复。但是,当我去offset.storage.topic
查看存储了哪些偏移元数据时,主题中没有任何内容。
这是我使用的命令:
kafka-console-consumer --bootstrap-server kafka1:9092,kafka2:9092,kafka3:9092 --topic connect-offsets --from-beginning
让此命令运行一分钟左右后,我收到此消息:
Processed a total of 0 messages
总结一下,我有两个问题:
- 为什么即使我的分布式应用程序正确保持状态,偏移元数据也没有写入应该存储它的主题?
- 如何访问 Kafka Connect 分布式模式应用程序的偏移元数据信息?这对于我的团队对我们系统的 Lambda 架构实施来说是 100% 必要的。
谢谢您的帮助。