4

我启动了一个 kafka-connect 分布式工作集群,它使用该主题connect-offset进行偏移存储:

offset.storage.topic=connect-offset

由于为代理提供了默认策略“cleanup.policy=delete”,因此在使用“cleanup.policy=compact”创建主题时,我最终将获得该主题的“cleanup.policy=compact,delete”。导致 kafka-connect 工作进程抛出异常:

org.apache.kafka.common.config.ConfigException:通过“offset.storage.topic”属性提供的主题“slpe-connect-offset”需要具有“cleanup.policy=compact”以保证源连接器的一致性和持久性偏移量,但发现该主题当前具有“cleanup.policy=compact,delete”。继续可能会导致最终丢失源连接器偏移量以及将来重新启动此 Connect 集群的问题。更改 Connect 工作程序配置中的“offset.storage.topic”属性以使用具有“cleanup.policy=compact”的主题。

问题:是否有任何 kafka-connect worker 配置允许吃这个异常来保持工作进程?虽然这是一个风险,但delete在达到保留或大小限制之前不会发生。

4

1 回答 1

4

此验证在KAFKA-9216 ( PR ) 中引入,并影响 2.3.2、2.6.0、2.4.2、2.5.1 版本:

当前更改有助于防止用户使用已启用删除清理策略的主题运行 Connect,这将删除所有连接器配置、源偏移量以及早于保留时间的连接器和任务状态。这意味着,例如,长时间运行的连接器的配置可能会被代理删除,这将在后续重新平衡或重新启动 Connect 工作人员时导致重新启动问题。连接行为要求其内部主题被压缩并且在保留一段时间后不被删除

因此,强烈不建议对 Kafka Connect 内部主题使用删除清理策略:只需重新创建这些主题。

没有任何配置属性可以忽略此验证,但如果需要,您可以将 Kafka Connect 降级到没有它的版本。

于 2021-01-04T15:36:12.150 回答