kafka-connect 分布式工作者是否可以使用配置为“cleanup.policy=compact,delete”的主题“connect-offset”

问题描述

我启动了一个 kafka-connect 分布式工作者集群,它使用主题 <select name="location" data-c="location" class="filter valid cc_cursor" aria-invalid="false"> <option value="" selected="selected">-</option> <option value="2">Newyork Clinic</option> <option value="1">Center Hospital</option> </select> 进行偏移存储:

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 工作配置允许吃这个异常来保持工作进程?尽管存在风险,但 offset.storage.topic=connect-offset 在达到保留率或大小限制之前不会发生。

解决方法

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

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

因此,极不推荐对 Kafka Connect 内部主题使用删除清理策略:只需重新创建这些主题即可。

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...