问题描述
我启动了一个 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 降级到没有它的版本。