預設情況下,ActiveMQ使用useJmx後,jmx的url為
service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi
這時,jmx的MBean server被綁死在localhost上,無法在broker所在機器以外的機器訪問。
其實ActiveMQ提供了jmx相關的幾個配置,不僅可以調整這個url中的ip和連接埠,還可以使用其他的MBean server。
| 屬性名稱 |
預設值 |
描述 |
| useMBeanServer |
true |
為true則避免建立一個MBeanServer,使用jvm中已有的MBeanServer |
| jmxDomainName |
org.apache.activemq |
jmx域,所有ObjectName的首碼 |
| createMBeanServer |
true |
為true則在需要時建立一個MBeanServer |
| createConnector |
true |
為true則建立一個JMX connector |
| connectorPort |
1099 |
JMX connector的連接埠 |
| connectorHost |
localhost |
JMX connector和RMI server(rmiServerPort>0)的host |
| rmiServerPort |
0 |
RMI server的連接埠(便於穿過防火牆) |
| connectorPath |
/jmxrmi |
JMX connector註冊的路徑 |
| findTigerMBeanServer |
true |
啟用或禁用尋找Java 5 平台的 MBeanServer |
1、可以通過修改connectorHost和connectorPort,修改掉url中的localhost:1099
例如本地的:
<managementContext> <managementContext createConnector="true" connectorHost="10.1.1.101"/> </managementContext>
則啟動的時候顯示:
INFO | JMX consoles can connect to service:jmx:rmi:///jndi/rmi://10.1.1.101:1098/jmxrmi
此時即可通過jconsole或jmx程式遠端存取ActiveMQ:
2、也可以通過rmiServerPort指定RMI的連接埠,
<managementContext> <managementContext createConnector="true" connectorHost="10.1.1.101" connectorPort="1098" rmiServerPort="1097"/> </managementContext>
控制台輸出:
INFO | JMX consoles can connect to service:jmx:rmi://10.1.1.101:1097/jndi/rmi://10.1.1.101:1098/jmxrmi
此時url變成了
service:jmx:rmi://10.1.1.101:1097/jndi/rmi://10.1.1.101:1098/jmxrmi
這樣,rmi和jmx的連接埠都可以自己配置了。
3、通過修改jmxDomainName可以設定MBean對象的ObjectName
參考文檔:http://activemq.apache.org/jmx.html