Mar*_*tra 15 activemq-classic jmx
我正在使用Apache ActiveMQ version 5.8.0,我下载了Apache ActiveMQ Browser version 2.5.2.8
在Apache ActiveMQ中,我编辑了activemq.xml配置以使用JMX:
<broker xmlns="http://activemq.apache.org/schema/core" useJmx="true" brokerName="localhost" dataDirectory="${activemq.data}">
<!-- This needed to be set to true, otherwise JMX won't start in 5.8.0 -->
<managementContext>
<managementContext createConnector="true"/>
</managementContext>
</broker>
Run Code Online (Sandbox Code Playgroud)
在启动脚本中,我按如下方式设置JMX设置:
#ACTIVEMQ_SUNJMX_START="-Dcom.sun.management.jmxremote.port=11099 "
ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.password.file=${ACTIVEMQ_CONF}/jmx.password"
ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.access.file=${ACTIVEMQ_CONF}/jmx.access"
ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.ssl=false"
ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote"
Run Code Online (Sandbox Code Playgroud)
当我重新启动Apache ActiveMQ时,日志显示JMX已启动且可访问:
JMX consoles can connect to service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi | org.apache.activemq.broker.jmx.ManagementContext | JMX connector
Run Code Online (Sandbox Code Playgroud)
还检查端口是否正在侦听结果进入侦听端口:
[me@server ~]$ netstat -lptun | grep 1099
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 :::1099 :::* LISTEN 16775/java
Run Code Online (Sandbox Code Playgroud)
Apache ActiveMQ正在服务器上运行.例如,在IP 10.0.0.100上.Apache ActiveMQ Browser在我的PC上运行(10.0.0.200).
当我尝试连接Apache ActiveMQ Browser时,连接会一直失败.我正在使用以下设置:
JMX URL: service:jmx:rmi:///jndi/rmi://10.0.0.100:1099/jmxrmi
JMX role: admin
JMS password: activemq
Run Code Online (Sandbox Code Playgroud)
此时我将用户和密码保留为jmx.password和jmx.access中的默认值.
我还尝试连接putty时为端口1099创建隧道到本地端口1099,然后连接到localhost而不是10.0.0.100以确保没有防火墙是问题.但都失败了.
我忘了什么吗?
JB-*_*JB- 17
不幸的是,JMX需要两个端口才能正常运行.默认情况下,第二个(RMI注册表端口)被随机选取,导致防火墙等问题.
既然你可以使用JDK7u4
-Dcom.sun.management.jmxremote.rmi.port=<port>
Run Code Online (Sandbox Code Playgroud)
设置要使用的RMI端口.
Cel*_*nHC 10
经过几个小时的痛苦.连接防火墙后的魔力.
<managementContext>
<managementContext createConnector="true" rmiServerPort="1098" connectorPort="1099" />
</managementContext>
Run Code Online (Sandbox Code Playgroud)
示例连接字符串:
service:jmx:rmi://10.0.4.14:1098/jndi/rmi://10.0.4.14:1099/jmxrmi
Run Code Online (Sandbox Code Playgroud)
如果您受JDK版本的限制,那么不能使用-Dcom.sun.management.jmxremote.rmi.port,您也可以在managementContext本身中指定RMI注册表端口.
<broker xmlns="http://activemq.apache.org/schema/core" useJmx="true" brokerName="localhost" dataDirectory="${activemq.data}">
...
<managementContext>
<managementContext connectorPort="1099" rmiServerPort="<port>" />
</managementContext>
...
</broker>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18888 次 |
| 最近记录: |