我遇到以下错误:
“ ERROR WorkerSourceTask(id = test-mysql-dbc-source-0)无法刷新,在等待生产者刷新未完成的N条消息时超时。
ERROR无法提交偏移量。 (org.apache.kafka.connect.runtime.WorkerSourceTask:XXX)“
设置:
我在AWS中有一个EC2实例(t2.medium-2核4GB RAM),用作Kafka服务器。另一个EC2实例具有一个沙箱MySQL数据库和带有Confluent JDBC Source Connector的Kafka Connect。 Python脚本在表中随机插入几行,以模拟某些活动。在我的笔记本电脑上,我打开了Kafka控制台使用者以读取来自Kafka服务器的消息。
两个EC2实例上的所有IP地址均打开端口22、3306、9092、2888。
下面是我用于Kafka Connect Source的配置文件
配置文件:
connect-standalone.properties
bootstrap.servers=FIRST_EC2_PUBLIC_IP:9092
key.converter.schemas.enable=true
value.converter.schemas.enable=true
offset.storage.file.filename=/tmp/connect.offsets
acks=1
compression.type=lz4
plugin.path=/usr/share/java
jdbc_source.properties
name=test-mysql-jdbc-source
connector.class=io.confluent.connect.jdbc.JdbcSourceConnector
tasks.max=1
connection.url=jdbc:mysql://localhost:3306/DB_NAME
connection.user=root
connection.password=DB_PASSWORD
table.whitelist=TEST_TABLE
mode=timestamp+incrementing
incrementing.column.name=ID_RECORD
timestamp.column.name=TIMESTMP
topic.prefix=mysql-source-
acks=1
compression.type=lz4
我尝试用各种设置和选项进行操作。通常,我尝试按照this link的建议使用offset.flush.timeout.ms
和buffer.memory
选项。
生产者的行为:
因此,基本上,在第二个EC2实例上启动生产者之后,我可以在kafka控制台使用者中的笔记本电脑上看到消息,因此可以正常工作。我可以看到一段时间后出现的新记录。但是,通常在创建表中的新行时,生产者只会在大约5至20分钟内不将其推送到kafka服务器(第一个EC2实例),并抛出上述错误。未完成邮件的数量不会变大。在大多数情况下,它是2-6条消息。在抛出错误5-20分钟后,它最终将发送数据,并且控制台使用者使用该数据并可以正常工作一段时间,然后再次出现错误。
如果我手动停止生产者并再次启动它,则未完成的消息会立即刷新,并且可以在笔记本电脑的控制台使用者中看到。
能否请您指出问题的根源以及导致这种情况的原因。