spring-integraion-jms(4.2)を使用してJMS(JNDIで解決)経由でIBM WebSphere MQ 7.0に接続されたIBM WebSphere AS 8.5.5.9 0.5)として構成インバウンドゲートウェイは、以下:replyToが存在しないキューに設定されている場合の無限JMSメッセージ再配信ループ
<int-jms:inbound-gateway id="requestGateway"
connection-factory="jndiConnectionFactory"
request-destination="jndiQueueInput"
request-channel="channel.request.message"
reply-channel="channel.response.message"
default-reply-destination="jndiQueueOutput"
error-channel="errorChannel"/>
インバウンドメッセージを処理し、状態応答メッセージは、チャネルchannel.response.message
に到着しました。
WARN o.s.j.l.DefaultMessageListenerContainer - Execution of JMS message listener failed, and no ErrorHandler has been set.
com.ibm.msg.client.jms.DetailedInvalidDestinationException: JMSWMQ2008: Failed to open MQ queue 'BLABLABLA'.
at com.ibm.msg.client.wmq.common.internal.Reason.reasonToException(Reason.java:498)
at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:216)
at com.ibm.msg.client.wmq.internal.WMQMessageProducer.checkJmqiCallSuccess(WMQMessageProducer.java:1086)
at com.ibm.msg.client.wmq.internal.WMQMessageProducer.checkJmqiCallSuccess(WMQMessageProducer.java:1044)
at com.ibm.msg.client.wmq.internal.WMQMessageProducer.access$800(WMQMessageProducer.java:71)
at com.ibm.msg.client.wmq.internal.WMQMessageProducer$SpiIdentifiedProducerShadow.initialise(WMQMessageProducer.java:790)
at com.ibm.msg.client.wmq.internal.WMQMessageProducer.<init>(WMQMessageProducer.java:1020)
at com.ibm.msg.client.wmq.internal.WMQSession.createProducer(WMQSession.java:926)
at com.ibm.msg.client.jms.internal.JmsSessionImpl.createProducer(JmsSessionImpl.java:1323)
at com.ibm.mq.jms.MQSession.createProducer(MQSession.java:682)
at com.ibm.ejs.jms.JMSMessageProducerHandle.<init>(JMSMessageProducerHandle.java:134)
at com.ibm.ejs.jms.JMSSessionHandle.createProducer(JMSSessionHandle.java:1869)
at org.springframework.integration.jms.ChannelPublishingJmsMessageListener.sendReply(ChannelPublishingJmsMessageListener.java:464)
at org.springframework.integration.jms.ChannelPublishingJmsMessageListener.onMessage(ChannelPublishingJmsMessageListener.java:358)
at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:721)
at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:681)
at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:651)
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:315)
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:253)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1158)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1150)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1047)
at java.lang.Thread.run(Thread.java:785)
Caused by: com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2085' ('MQRC_UNKNOWN_OBJECT_NAME').
at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:204)
... 21 common frames omitted
が続いてメッセージがロールバック、および再配信ました: インバウンドメッセージが(つまり、存在しないキュー)次の例外がエラーチャンネル設定(正しく処理統合の流れの間に、他の例外)を無視して、提起間違ったjms_replyTo
ヘッダを持っています無限ループになります。 この問題の回避策またはベストプラクティスはHandling poison messages in WebSphere MQ classes for JMS以外にありますか?