Mule 4.7对接ActiveMQ 5.18.5遇JMSException:连接串参数异常
解决方案
1. 直接修复连接串参数格式
系统自动追加?socket.verifyHostname=false导致URL出现两个?,直接手动把参数用&合并,替换原连接串:
failover:(ssl://amq.org:61617)?maxReconnectAttempts=-1&socket.verifyHostname=false
这样既保留了无限重连的配置,也提前适配了SSL主机名校验设置,避免系统自动追加时搞砸参数格式。
2. 排查重连策略的空指针问题
如果想用Mule的重连策略替代URL里的maxReconnectAttempts,得确保配置没毛病:
- 检查XML里的重连策略定义,必填属性(比如
maxReconnectAttempts、frequency)不能缺,示例:
<reconnection-strategy> <reconnect maxReconnectAttempts="-1" frequency="5000"/> </reconnection-strategy>
- 别同时用URL重连参数和Mule重连策略,两者冲突容易触发空指针,二选一就行。
- 确认
activemq-all和activemq-client都是5.18.5版本,依赖版本不一致也会搞出空指针这类奇怪问题。
3. 从SSL配置根源解决自动追加问题
socket.verifyHostname=false是SSL上下文的默认设置,直接在Mule的JMS Connector SSL配置里显式声明,就不会再往URL里乱加参数了:
- 给SSL配置加
verify-hostname="false"属性(根据Connector版本调整属性名),示例:
<jms:config name="JMS_Config" doc:name="JMS Config" doc:id="xxx"> <jms:active-mq-connection username="${amq.username}" password="${amq.password}"> <jms:client-config> <jms:ssl-client-config verify-hostname="false" /> </jms:client-config> <jms:connection-factory-config brokerUrl="${amq.brokerUrl}"/> </jms:active-mq-connection> </jms:config>
4. 核对版本兼容性
确认Mule 4.7、JMS Connector 1.9.6和ActiveMQ 5.18.5的兼容性,要是有已知适配bug,直接把JMS Connector升到1.10.x这类更高的兼容版本试试。
内容的提问来源于stack exchange,提问作者Daisy
相关产品推荐
相关产品推荐

