如何在Wildfly资源适配器中配置MQ客户端自动重连
IBM MQ资源适配器重连配置失败问题
我使用wmq.jakarta.jmsra.rar(9.3.3.1版本)资源适配器配合Wildfly的消息驱动Bean接收IBM MQ消息,当MQ服务器因网络故障断开后,连接无法自动重建。我尝试添加reconnectionRetryInterval和reconnectionRetryCount参数到standalone.xml的连接定义中,配置如下:
<subsystem xmlns="urn:jboss:domain:resource-adapters:6.1"> <resource-adapters> <resource-adapter id="wmq.jakarta.jmsra.rar"> <archive> wmq.jakarta.jmsra.rar </archive> <transaction-support>NoTransaction</transaction-support> <connection-definitions> <connection-definition class-name="com.ibm.mq.jakarta.connector.outbound.ManagedConnectionFactoryImpl" jndi-name="java:jboss/jms/Isp4dQueueManager" tracking="false" pool-name="mqConnectionFactory"> <config-property name="hostName"> somehostname </config-property> <config-property name="port"> 1234 </config-property> <config-property name="transportType"> CLIENT </config-property> <config-property name="channel"> SomeChannel </config-property> <config-property name="queueManager"> SomeQueuemanager </config-property> <config-property name="username"> username </config-property> <config-property name="password"> password </config-property> <config-property name="reconnectionRetryCount"> 30 </config-property> <config-property name="reconnectionRetryInterval"> 5000 </config-property> </connection-definition> </connection-definitions> </subsystem>
启动Wildfly时抛出错误:
Caused by: org.jboss.jca.deployers.common.DeployException: IJ020060: Unable to inject: com.ibm.mq.jakarta.connector.outbound.ManagedConnectionFactoryImpl property: reconnectionRetryCount value: 30
正确配置方式
问题核心是重连参数的配置位置错误:reconnectionRetryCount和reconnectionRetryInterval属于资源适配器级别的配置属性,而非连接定义级别。需要将这两个参数移到<resource-adapter>节点下,而非<connection-definition>内部。
修正后的配置示例:
<subsystem xmlns="urn:jboss:domain:resource-adapters:6.1"> <resource-adapters> <resource-adapter id="wmq.jakarta.jmsra.rar"> <archive> wmq.jakarta.jmsra.rar </archive> <transaction-support>NoTransaction</transaction-support> <!-- 重连参数配置在资源适配器级别 --> <config-property name="reconnectionRetryCount">30</config-property> <config-property name="reconnectionRetryInterval">5000</config-property> <connection-definitions> <connection-definition class-name="com.ibm.mq.jakarta.connector.outbound.ManagedConnectionFactoryImpl" jndi-name="java:jboss/jms/Isp4dQueueManager" tracking="false" pool-name="mqConnectionFactory"> <config-property name="hostName"> somehostname </config-property> <config-property name="port"> 1234 </config-property> <config-property name="transportType"> CLIENT </config-property> <config-property name="channel"> SomeChannel </config-property> <config-property name="queueManager"> SomeQueuemanager </config-property> <config-property name="username"> username </config-property> <config-property name="password"> password </config-property> </connection-definition> </connection-definitions> </resource-adapter> </resource-adapters> </subsystem>
额外注意事项:
- 确认资源适配器版本(9.3.3.1)支持这两个重连参数,IBM MQ 9.3及以上版本的Jakarta EE资源适配器已提供该功能
- 配置修改后需重启Wildfly使设置生效
- 若需更精细的连接可用性控制,可结合Wildfly连接池的
validate-on-match、background-validation等配置,但核心重连逻辑由MQ资源适配器处理
内容的提问来源于stack exchange,提问作者Matthias
相关产品推荐
相关产品推荐

