MULE 与 WMQ 网关队列管理器的连接
MULE Connection with WMQ Gateway Queue Manager
我们正在使用 Mule runtime 3.9.0。在我们的生产环境中,我们的 Mule 应用程序连接到 WMQ 网关队列管理器。 WMQ 网关队列管理器配置在 2 个节点上(即 active/passive)。 WMQ 在活动节点随时间变化的两个节点之间切换。
WMQ GW 的 JMS 连接器的 Mule 配置:
<spring:bean id="MQGatewayConnectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory" name="MQGatewayConnectionFactory" scope="singleton">
<spring:property name="transportType" value="1"></spring:property>
<spring:property name="connectionNameList" value="${mqm.gw.connectionNameList}"></spring:property>
<spring:property name="channel" value="${mqm.gw.channel}"></spring:property>
<spring:property name="queueManager" value="${mqm.gw.name}"></spring:property>
</spring:bean>
<jms:connector name="WebsphereMQConnector_GW_Adapters"
doc:name="WebsphereMQConnector_GW_Adapters"
connectionFactory-ref="${MQGatewayConnectionFactory}"
username="${mqm.user}"
validateConnections="true"
maxRedelivery="-1"
cacheJmsSessions="false"
disableTemporaryReplyToDestinations="true"
persistentDelivery="true"
specification="1.1">
<reconnect-forever frequency="10000"/>
</jms:connector>
以下配置属性用于上述连接:
## MQ GW (for File Adapters)
mqm.gw.connectionNameList=euukteialmq01uf(11414),euukteialmq02uf(11414)
mqm.gw.name=QMUAGW01
mqm.gw.channel=CLIENT.APP.SVRCONN
当 WMQ 网关切换活动节点时,JMS 连接器 WebsphereMQConnector_GW_Adapters 停止,我们得到以下错误日志:
ERROR 2020-10-31 21:31:12,178 [JMSCCThreadPoolWorker-2555] org.mule.exception.DefaultSystemExceptionStrategy:
********************************************************************************
Message : JMSWMQ1107: A problem with this connection has occurred. (com.ibm.msg.client.jms.DetailedJMSException)
JMS Code : JMSWMQ1107
Element : /WebsphereMQConnector_GW_Adapters @ app:af_globals.xml:157 (WebsphereMQConnector_GW_Adapters)
--------------------------------------------------------------------------------
Root Exception stack trace:
com.ibm.mq.MQException: MQ delivered an asynchronous event with completion code '2', and reason '2009'.
at com.ibm.msg.client.wmq.internal.WMQConnection.consumer(WMQConnection.java:800)
at com.ibm.mq.jmqi.remote.api.RemoteHconn.callEventHandler(RemoteHconn.java:3132)
at com.ibm.mq.jmqi.remote.api.RemoteHconn.driveEventsEH(RemoteHconn.java:658)
at com.ibm.mq.jmqi.remote.impl.RemoteDispatchThread.processHconn(RemoteDispatchThread.java:666)
at com.ibm.mq.jmqi.remote.impl.RemoteDispatchThread.run(RemoteDispatchThread.java:223)
at com.ibm.msg.client.commonservices.workqueue.WorkQueueItem.runTask(WorkQueueItem.java:319)
at com.ibm.msg.client.commonservices.workqueue.SimpleWorkQueueItem.runItem(SimpleWorkQueueItem.java:99)
at com.ibm.msg.client.commonservices.workqueue.WorkQueueItem.run(WorkQueueItem.java:343)
at com.ibm.msg.client.commonservices.workqueue.WorkQueueManager.runWorkQueueItem(WorkQueueManager.java:312)
at com.ibm.msg.client.commonservices.j2se.workqueue.WorkQueueManagerImplementation$ThreadPoolWorker.run(WorkQueueManagerImplementation.java:1227)
********************************************************************************
我知道 mule 应该重新尝试并获得与网关 WMQ 队列管理器的连接,但它没有。我们被迫重新启动生产 Mule 节点。
根据 Mule 文章,这是 a known problem 并且 Mule 尚未在运行时 3.9.0 上修复此问题。有人可以帮助我找到在主动-被动 WMQ 上运行此连接的最佳方法吗?
知识库文章为您提供了答案。 Mule 3.9.0 有问题。修复在 3.9.3+ 中。我强烈建议迁移到 Mule 3.9.4 作为 Mule 3 的最新和更稳定的版本。使用 3.9.0 你会不断发现已经在以后的错误修复版本中解决的问题。您可以在发行说明中找到每个版本的修复列表:
或者,您可以创建一个支持案例,为您的版本请求针对此问题的补丁。
我们正在使用 Mule runtime 3.9.0。在我们的生产环境中,我们的 Mule 应用程序连接到 WMQ 网关队列管理器。 WMQ 网关队列管理器配置在 2 个节点上(即 active/passive)。 WMQ 在活动节点随时间变化的两个节点之间切换。
WMQ GW 的 JMS 连接器的 Mule 配置:
<spring:bean id="MQGatewayConnectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory" name="MQGatewayConnectionFactory" scope="singleton">
<spring:property name="transportType" value="1"></spring:property>
<spring:property name="connectionNameList" value="${mqm.gw.connectionNameList}"></spring:property>
<spring:property name="channel" value="${mqm.gw.channel}"></spring:property>
<spring:property name="queueManager" value="${mqm.gw.name}"></spring:property>
</spring:bean>
<jms:connector name="WebsphereMQConnector_GW_Adapters"
doc:name="WebsphereMQConnector_GW_Adapters"
connectionFactory-ref="${MQGatewayConnectionFactory}"
username="${mqm.user}"
validateConnections="true"
maxRedelivery="-1"
cacheJmsSessions="false"
disableTemporaryReplyToDestinations="true"
persistentDelivery="true"
specification="1.1">
<reconnect-forever frequency="10000"/>
</jms:connector>
以下配置属性用于上述连接:
## MQ GW (for File Adapters)
mqm.gw.connectionNameList=euukteialmq01uf(11414),euukteialmq02uf(11414)
mqm.gw.name=QMUAGW01
mqm.gw.channel=CLIENT.APP.SVRCONN
当 WMQ 网关切换活动节点时,JMS 连接器 WebsphereMQConnector_GW_Adapters 停止,我们得到以下错误日志:
ERROR 2020-10-31 21:31:12,178 [JMSCCThreadPoolWorker-2555] org.mule.exception.DefaultSystemExceptionStrategy:
********************************************************************************
Message : JMSWMQ1107: A problem with this connection has occurred. (com.ibm.msg.client.jms.DetailedJMSException)
JMS Code : JMSWMQ1107
Element : /WebsphereMQConnector_GW_Adapters @ app:af_globals.xml:157 (WebsphereMQConnector_GW_Adapters)
--------------------------------------------------------------------------------
Root Exception stack trace:
com.ibm.mq.MQException: MQ delivered an asynchronous event with completion code '2', and reason '2009'.
at com.ibm.msg.client.wmq.internal.WMQConnection.consumer(WMQConnection.java:800)
at com.ibm.mq.jmqi.remote.api.RemoteHconn.callEventHandler(RemoteHconn.java:3132)
at com.ibm.mq.jmqi.remote.api.RemoteHconn.driveEventsEH(RemoteHconn.java:658)
at com.ibm.mq.jmqi.remote.impl.RemoteDispatchThread.processHconn(RemoteDispatchThread.java:666)
at com.ibm.mq.jmqi.remote.impl.RemoteDispatchThread.run(RemoteDispatchThread.java:223)
at com.ibm.msg.client.commonservices.workqueue.WorkQueueItem.runTask(WorkQueueItem.java:319)
at com.ibm.msg.client.commonservices.workqueue.SimpleWorkQueueItem.runItem(SimpleWorkQueueItem.java:99)
at com.ibm.msg.client.commonservices.workqueue.WorkQueueItem.run(WorkQueueItem.java:343)
at com.ibm.msg.client.commonservices.workqueue.WorkQueueManager.runWorkQueueItem(WorkQueueManager.java:312)
at com.ibm.msg.client.commonservices.j2se.workqueue.WorkQueueManagerImplementation$ThreadPoolWorker.run(WorkQueueManagerImplementation.java:1227)
********************************************************************************
我知道 mule 应该重新尝试并获得与网关 WMQ 队列管理器的连接,但它没有。我们被迫重新启动生产 Mule 节点。
根据 Mule 文章,这是 a known problem 并且 Mule 尚未在运行时 3.9.0 上修复此问题。有人可以帮助我找到在主动-被动 WMQ 上运行此连接的最佳方法吗?
知识库文章为您提供了答案。 Mule 3.9.0 有问题。修复在 3.9.3+ 中。我强烈建议迁移到 Mule 3.9.4 作为 Mule 3 的最新和更稳定的版本。使用 3.9.0 你会不断发现已经在以后的错误修复版本中解决的问题。您可以在发行说明中找到每个版本的修复列表:
或者,您可以创建一个支持案例,为您的版本请求针对此问题的补丁。