首页 文章

在Kafka接收器连接器上设置唯一的客户端ID

提问于
浏览
1

我正在尝试使用JMX来监视在分布式工作器上运行的一组连接器任务 . 唯一可用的JMX输出似乎是Kafka Consumer MBeans . 不幸的是,在工作人员任务使用的Kafka Consumer上设置可识别的_1239555似乎是不可能的 .

文档建议在connector configuration上使用 client.id . 在连接器配置上设置此选项无效 . 在工作程序配置(属性文件)上设置此选项仅将此设置为工作程序用于配置和状态主题 .

看看the code,接收器消费者似乎使用带有前缀 consumer. 的worker配置 . 这样做有效,但这是在worker中的所有任务中设置的单个client-id,使得监视单个使用者,甚至不可能监视特定的连接器 .

默认行为将使用使用者中的默认 client.id ,即使用 consumer-n ,其中 n 是递增的数字 . JMX输出不包括此使用者所属的 groupd.id ,因此无法将使用者连接与该工作者中运行的连接器相关联 .

没有额外的JMX输出(如 groupd.id 和连接器名称),或更好的默认值 client.id 我无法看到如何使用JMX监控Kafka连接器 .

1 回答

  • 1

    首先,我认为设置的位置有点混乱 . 有两种类型的配置:Corker和Connector . 可以在两者中使用少量配置(例如,允许每个连接器覆盖默认的工作级配置),但是大多数情况下它们是不同的:工作者级配置控制整个过程如何操作,而连接器配置特定于单个连接器 .

    从逻辑上讲,单个Connect群集将运行许多您可能想要独立处理的客户端,我认为这是您的问题所在 . 客户端类型包括源任务( 生产环境 者),宿任务(消费者),以及框架级客户端(工作者) .

    您提供的第一个链接是Kafka Connect工作者配置 . client.id 出现在那里,因为 Worker 通过消费者使用的相同组协调协议相互协调 . 因此,您在Worker配置中指定的 client.id 将类似于 my-kafka-connect-cluster-worker ,表示与Worker操作关联的流量与Connect群集的worker相关联 .

    你可以覆盖 consumer.client.id (或者实际上是任何 生产环境 者或消费者配置)是正确的,它将全面适用于在该工作者中创建的所有客户端 . 但正如你正确指出的那样,这将是统一的 .

    简短的回答是,目前这不容易被覆盖,虽然修复应该是微不足道的(并且绝对值得制作) . creates producerscreates consumers应该至少使用工作组ID和任务ID来生成默认客户端ID并将其添加到配置中的代码(即使您针对相同的ID运行多个连接群集,2的组合也会保证唯一ID Kafka 集群) .

    有一个JIRA filed来解决这个问题 .

相关问题