Apache kafka 在Kafka接收器连接器上设置唯一的客户端id
我正在尝试使用JMX监视一组在分布式工作程序上运行的连接器任务。唯一可用的JMX输出似乎是Kafka消费者MBean。不幸的是,在worker任务正在使用的Kafka使用者上设置可识别的client.id似乎是不可能的 文档建议在上使用client.id。在连接器配置上设置此选项无效。在worker配置属性文件上设置此选项仅可将其设置为worker用于配置和状态主题 现在看来,接收器使用者似乎使用了前缀为consumer的worker配置。。这样做是可行的,但这是在worker中的所有任务中设置的单个客户端id,因此无法监视单个使用者,甚至无法监视特定的连接器 默认行为将在使用者中使用默认的client.id,即使用consumer-n,其中n是递增的数字。JMX输出不包括此使用者所属的groupd.id,因此无法将使用者连接与该辅助进程中运行的连接器关联起来Apache kafka 在Kafka接收器连接器上设置唯一的客户端id,apache-kafka,Apache Kafka,我正在尝试使用JMX监视一组在分布式工作程序上运行的连接器任务。唯一可用的JMX输出似乎是Kafka消费者MBean。不幸的是,在worker任务正在使用的Kafka使用者上设置可识别的client.id似乎是不可能的 文档建议在上使用client.id。在连接器配置上设置此选项无效。在worker配置属性文件上设置此选项仅可将其设置为worker用于配置和状态主题 现在看来,接收器使用者似乎使用了前缀为consumer的worker配置。。这样做是可行的,但这是在worker中的所有任务中设置
如果没有额外的JMX输出,比如groupd.id和connector name,或者更好的默认client.id,我就看不出如何使用JMX监控Kafka连接器 首先,我认为设置的位置有点混乱。有两种配置:塞瓶器和连接器。有少量配置可在这两种情况下使用,例如允许每个连接器覆盖默认工作人员级别配置,但在大多数情况下,它们是不同的:工作人员级别配置控制整个流程的运行方式,而连接器配置特定于单个连接器 从逻辑上讲,一个连接集群将运行许多您可能希望独立处理的客户机,我认为这就是您的问题所在。客户机的类型包括源任务生产者、接收器任务消费者以及框架级别的客户机工作者 您提供的第一个链接是关于Kafka Connect worker配置的。出现client.id是因为工作人员通过消费者使用的相同组协调协议相互协调。因此,您将在Worker配置中指定的client.id类似于我的kafka connect cluster Worker,表示与Worker操作关联的流量与connect集群的Worker关联 您可以覆盖consumer.client.id或任何生产者或消费者配置,这是正确的,它将全面应用于在该worker中创建的所有客户端。但正如您正确指出的,这将是一致的 简单的回答是,目前这将不容易覆盖,尽管修复应该是微不足道的,并且绝对值得进行。该代码至少应使用工作组ID和任务ID来生成默认客户端ID,并将其添加到配置中。即使针对同一Kafka群集运行多个connect群集,2的组合也可确保ID唯一
解决这个问题有一个很好的方法。首先,我认为设置的位置有点混乱。有两种配置:塞瓶器和连接器。有少量配置可在这两种情况下使用,例如允许每个连接器覆盖默认工作人员级别配置,但在大多数情况下,它们是不同的:工作人员级别配置控制整个流程的运行方式,而连接器配置特定于单个连接器 从逻辑上讲,一个连接集群将运行许多您可能希望独立处理的客户机,我认为这就是您的问题所在。客户机的类型包括源任务生产者、接收器任务消费者以及框架级别的客户机工作者 您提供的第一个链接是关于Kafka Connect worker配置的。出现client.id是因为工作人员通过消费者使用的相同组协调协议相互协调。因此,您将在Worker配置中指定的client.id类似于我的kafka connect cluster Worker,表示与Worker操作关联的流量与connect集群的Worker关联 您可以覆盖consumer.client.id或任何生产者或消费者配置,这是正确的,它将全面应用于在该worker中创建的所有客户端。但正如您正确指出的,这将是一致的 简单的回答是,目前这将不容易覆盖,尽管修复应该是微不足道的,并且绝对值得进行。该代码至少应使用工作组ID和任务ID来生成默认客户端ID,并将其添加到配置中。即使针对同一Kafka群集运行多个connect群集,2的组合也可确保ID唯一 有一个f
或解决此问题。从Apache Kafka 2.3开始,client.id被设置为连接器id+任务,如图所示,一个连接器有三个任务,其中一个主题有十个分区:
$ docker exec -it kafka kafka-consumer-groups --bootstrap-server localhost:29092 --describe --group connect-sink-elastic-orders-00-A
GROUP TOPIC PARTITION CLIENT-ID
connect-sink-elastic-orders-00-A orders2 0 connector-consumer-sink-elastic-orders-00-A-0
connect-sink-elastic-orders-00-A orders2 1 connector-consumer-sink-elastic-orders-00-A-0
connect-sink-elastic-orders-00-A orders2 2 connector-consumer-sink-elastic-orders-00-A-0
connect-sink-elastic-orders-00-A orders2 3 connector-consumer-sink-elastic-orders-00-A-0
connect-sink-elastic-orders-00-A orders2 4 connector-consumer-sink-elastic-orders-00-A-1
connect-sink-elastic-orders-00-A orders2 5 connector-consumer-sink-elastic-orders-00-A-1
connect-sink-elastic-orders-00-A orders2 6 connector-consumer-sink-elastic-orders-00-A-1
connect-sink-elastic-orders-00-A orders2 7 connector-consumer-sink-elastic-orders-00-A-2
connect-sink-elastic-orders-00-A orders2 8 connector-consumer-sink-elastic-orders-00-A-2
connect-sink-elastic-orders-00-A orders2 9 connector-consumer-sink-elastic-orders-00-A-2
从Apache Kafka 2.3开始,为了可读性而删除了一些列,client.id被设置为connector id+任务,如下所示,对于具有三个任务的单个连接器,一个主题包含十个分区:
$ docker exec -it kafka kafka-consumer-groups --bootstrap-server localhost:29092 --describe --group connect-sink-elastic-orders-00-A
GROUP TOPIC PARTITION CLIENT-ID
connect-sink-elastic-orders-00-A orders2 0 connector-consumer-sink-elastic-orders-00-A-0
connect-sink-elastic-orders-00-A orders2 1 connector-consumer-sink-elastic-orders-00-A-0
connect-sink-elastic-orders-00-A orders2 2 connector-consumer-sink-elastic-orders-00-A-0
connect-sink-elastic-orders-00-A orders2 3 connector-consumer-sink-elastic-orders-00-A-0
connect-sink-elastic-orders-00-A orders2 4 connector-consumer-sink-elastic-orders-00-A-1
connect-sink-elastic-orders-00-A orders2 5 connector-consumer-sink-elastic-orders-00-A-1
connect-sink-elastic-orders-00-A orders2 6 connector-consumer-sink-elastic-orders-00-A-1
connect-sink-elastic-orders-00-A orders2 7 connector-consumer-sink-elastic-orders-00-A-2
connect-sink-elastic-orders-00-A orders2 8 connector-consumer-sink-elastic-orders-00-A-2
connect-sink-elastic-orders-00-A orders2 9 connector-consumer-sink-elastic-orders-00-A-2
为了可读性而删除了一些列JMX标识的唯一client.id问题的解决方法是查询代理的组成员资格,并在连接器中保留默认的使用者id。这并不理想,因为您需要单独跟踪组成员身份。解决JMX标识的唯一client.id问题的一个方法是查询代理的组成员身份,并在连接器中保留默认的使用者id。不太理想,因为您需要单独跟踪组成员。谢谢Ewen。这是有道理的。谢谢你。这是有道理的。