我正在尝试使用 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 在某个我无法理解的端口
有任何想法吗 ?