0

我正在尝试使用 Java 代码(消费者或生产者)获取 Kafka 的 mbean,就像它们出现在 jconsole 中一样。在 jconsole 中,我可以看到 mbean 的名称(例如objetName:kafka.consumer:type=consumer-fetch-manager-metrics,client-id=consumer-1:)

所以这是我的代码:

JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:9998/jmxrmi");

其中端口就像server.properties我设置的配置文件()中一样(我在 Kafka 配置文件中设置了端口(SET JMX_PORT=9098),我也尝试使用我的 Kafka 端口(9092)但是我得到了使用中的地址 -

 bean=new ObjectName("kafka.consumer:type=consumer-coordinator-metrics,client-id=consumer-1");
MBeanInfo info= connection.getMBeanInfo(bean);

我得到 InstanceNotFoundException

当我使用此代码时:

domains=connection.getDomains();

我得到了除 kafka.consumer 之外的所有域(即java.nio,java.util.logging , java.lang.. 等),但kafka.server即使我可以在 Jconsole 中看到kafka.consumermbeans 也没有。

但是,我不知道如何访问 JMXServiceURL:我试图给出以下内容:新

我也尝试这个:

MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();

但是在我得到服务器 bean 之后,我看不到 Kafka mbeans(只是我创建的其他自定义 mbeans 或其他人,但不是 Kafka mbeans)

我认为 Kafka 将端口暴露给 jconsole 在某个我无法理解的端口

有任何想法吗 ?

4

0 回答 0