WildFly嵌入式ActiveMQ Artemis配置与连接故障排查求助
嵌入式ActiveMQ Artemis连接失败排查
我正在运行独立WildFly服务器,想配置嵌入式ActiveMQ Artemis,但不确定配置是否正确。尝试连接tcp://localhost:8081时没有任何响应,希望能找到问题原因或排查工具。
相关配置片段(standalone-full.xml)
<server> ... <profile> ... <subsystem xmlns="urn:jboss:domain:messaging-activemq:13.1"> <server name="default"> ... <http-connector name="http-connector" socket-binding="activemq" endpoint="http-acceptor"/> <http-connector name="http-connector-throughput" socket-binding="activemq" endpoint="http-acceptor-throughput"> <param name="batch-delay" value="50"/> </http-connector> <http-acceptor name="http-acceptor" http-listener="activemq"/> <http-acceptor name="http-acceptor-throughput" http-listener="activemq"> <param name="batch-delay" value="50"/> <param name="direct-deliver" value="false"/> </http-acceptor> ... </server> </subsystem> ... <subsystem xmlns="urn:jboss:domain:undertow:12.0" default-server="default-server" default-virtual-host="default-host" default-servlet-container="default" default-security-domain="other" statistics-enabled="${wildfly.undertow.statistics-enabled:${wildfly.statistics-enabled:false}}"> <server name="default-server"> ... <http-listener name="activemq" socket-binding="activemq" enable-http2="true"/> ... </server> </subsystem> ... </profile> ... <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}"> ... <interface name="management"> <inet-address value="${jboss.bind.address.management:127.0.0.1}"/> </interface> <socket-binding name="managemnet" interface="activemq-interface" port="${jboss.activemq.port:8081}"/> ... </socket-binding-group> </server>
补充信息
- 之前使用标准配置时收到错误:
AMQ122005: Invalid "host" value "0.0.0.0" detected for "http-connector" connector.
- 不清楚Artemis的标准端口是否为
localhost:9990 - 版本信息:
应用 版本 Artemis 2.19.1 Wildfly 26.1 - 尝试通过Quarkus JMS示例连接
问题排查与修复建议
1. 配置中的明显错误
- Socket Binding拼写错误:配置的
socket-binding名称是managemnet(少一个e),但HTTP连接器和监听器引用的是activemq,导致绑定不匹配。修正为:<socket-binding name="activemq" interface="public" port="${jboss.activemq.port:8081}"/> - 接口未定义:配置中引用了
activemq-interface但未定义,需在socket-binding-group内添加:<interface name="activemq-interface"> <inet-address value="${jboss.bind.address.activemq:127.0.0.1}"/> </interface>
2. 连接协议不匹配
当前配置的是HTTP连接器/接受器,但你用tcp://协议连接,自然无响应:
- HTTP连接器对应的连接URL应为
http://localhost:8081 - 如果需要TCP连接,需添加原生TCP连接器配置:
同时添加对应的socket binding:<!-- 在messaging-activemq子系统内添加 --> <tcp-connector name="tcp-connector" socket-binding="artemis-tcp"/> <tcp-acceptor name="tcp-acceptor" socket-binding="artemis-tcp"/>
此时TCP连接URL为<socket-binding name="artemis-tcp" interface="public" port="${jboss.artemis.tcp.port:61616}"/>tcp://localhost:61616
3. 端口混淆说明
- WildFly管理控制台默认端口是
9990,和Artemis无关; - Artemis原生TCP默认端口通常为
61616,HTTP连接器一般复用WildFly HTTP端口(如8080),你这里配置的是8081。
4. 实用排查工具
- WildFly日志:查看
standalone/log/server.log,里面会有Artemis启动失败、绑定异常的详细信息; - 端口检测:用
netstat -anp | grep 8081(Linux)或netstat -ano | findstr 8081(Windows)检查端口是否被监听; - CLI测试:用
jboss-cli.sh(或.bat)连接WildFly,执行/subsystem=messaging-activemq/server=default/connection-factory=InVmConnectionFactory:test-connection()测试内部连接是否正常; - Artemis控制台:在
messaging-activemq子系统添加console配置后,可通过WildFly管理控制台查看Artemis状态。
5. 解决AMQ122005错误
该错误是因为HTTP连接器检测到host值为0.0.0.0,可在连接器中显式指定host参数:
<http-connector name="http-connector" socket-binding="activemq" endpoint="http-acceptor"> <param name="host" value="127.0.0.1"/> </http-connector>
内容的提问来源于stack exchange,提问作者Benny Dict
相关产品推荐
相关产品推荐

