1

使用连接到 Websphere MQ v7.1 的 Spring Integration 自己的 JMS 出站通道适配器:

    <!-- plugging xyz channel into a JMS xyzQueue -->

    <channel id="xyzChannel"/>
    <jms:outbound-channel-adapter channel="xyzChannel"
                                  destination="xyzQueue"/>

    <!-- will listen on all packets matched, and forward them to a xyzChannel -->

    <beans:bean id="xyzSender" class="com.custom.XyzSender">
        <beans:constructor-arg name="messageChannel" ref="xyzChannel"/>
    </beans:bean>

如果 MQ 代理(它的通道)在一秒钟内出现故障,则会记录异常:

Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2537;AMQ9558: The remote channel 'XYZ_CHANNEL' is not currently available ('MQRC_CHANNEL_NOT_AVAILABLE').

从 MQ 文档中,这些是导致此错误的可能原因:

  • 通道当前处于停止状态。
  • 通道已被通道出口停止。
  • 队列管理器已达到来自此客户端的此通道的最大允许限制。
  • 队列管理器已达到此通道的最大允许限制。
  • 队列管理器已达到所有通道的最大允许限制。

然而 Spring Integration 似乎把它吃掉了,在 MQ 通道再次可用后的一瞬间,其他消息被处理,因为什么也没发生。当然,它会导致消息丢失,这不是预期的情况。

处理此异常的方法是什么?上似乎没有错误通道属性jms:outbound-channel-adapter

4

0 回答 0