【问题标题】:Handle out of sync point issue via IBM JMS from Mule通过来自 Mule 的 IBM JMS 处理不同步点问题
【发布时间】:2019-02-03 09:43:54
【问题描述】:

我正在通过 JMS 从 Mule 连接 MQ-8.x,最近我遇到了一个问题,似乎 MQ 写入操作超出了同步点范围,因此以及巨大的入站负载,MQ 进入死锁状态。

<spring:bean id="ConnectionFactory" class="com.ibm.mq.jms.MQConnectionFactory" name="ConnectionFactory">
        <spring:property name="hostName" value="xxxx" />
        <spring:property name="port" value="xxxx"/>
        <spring:property name="queueManager" value="xxxx"/>
        <spring:property name="transportType" value="1"/>
        <spring:property name="channel" value="xxxx"/>
   </spring:bean>

<jms:connector name="JmsConsumer" username="xxxx" password="xxxx" specification="1.1" connectionFactory-ref="ConnectionFactory"  numberOfConsumers="1" validateConnections="true"  persistentDelivery="true" doc:name="JMS"/> 

<jms:outbound-endpoint queue="xxxx" connector-ref="JmsConsumer" doc:name="Audits"/>    

我的操作量将被移动,但它只是一个 PUT 操作,所以我真的不确定是否需要 XA 或其他事务管理器。

【问题讨论】:

  • 听起来你的 jms:connector 没有提交事务?也许您应该尝试 transactionalAction="ALWAYS_JOIN" ?

标签: jms mule ibm-mq xa mule-esb


【解决方案1】:

这已在 MQ-9.x 版本中得到处理,MQ 本身将隐式管理不同步点。 MQ-9.x 升级将是此类问题的解决方案。

https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_9.0.0/com.ibm.mq.dev.doc/q026865_.html

【讨论】:

  • 您应该接受您自己的答案,请注意此更改是在 MQ 9.0.5 CDS 版本中添加的,并且存在于新的 MQ v9.1 版本中。
【解决方案2】:

产生此消息是因为持久消息是在事务之外产生的。 MQ 高度优化以处理事务性持久消息,此警告通知我们队列未尽可能高效地处理。如果您在事务/同步点内进行操作,或者如果非持久性足够好,关闭持久性标志,系统将获得显着的性能改进。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 2015-01-22
    • 1970-01-01
    相关资源
    最近更新 更多