【问题标题】:camel wmq transactions - ack mode as TRANSACTED骆驼 wmq 事务 - 确认模式为 TRANSACTED
【发布时间】:2014-08-18 17:18:44
【问题描述】:

请找到以下场景或骆驼路线

from("wmq:queue:eventQueue + "?useMessageIDAsCorrelationID=true") 
    .transacted() 
    .bean(orchestrator, "processMessage(${body}, ${headers})"); 

对于事务,我正在维护 JmsTransactionManager。请找到相同的。实际上,我已经阅读了 Camel in Action 书中的第 9 章。基于此,我配置了 txn。

<bean id="wmq" class="org.apache.camel.component.jms.JmsComponent">
        <property name="transacted" value="true" />
        <property name="transactionManager" ref="txManager" />
</bean>
<bean id="txManager" class="org.springframework.jms.connection.JmsTransactionManager">
        <property name="connectionFactory" ref="wmqConnectionFactory" />
</bean>

现在在 Camel in Action 一书的第 9 章中,作者提到了 ACTIVEMQ.DLQ,但是在 Websphere MQ 的情况下会发生什么。 我的要求是,如果 processMessage(${body}, ${headers}) 根本无法处理并抛出异常,骆驼不应该承认并且消息应该在那里,因为它在 WMQ 中。

你能帮我做同样的事情吗?

谢谢 萨蒂亚吉特

【问题讨论】:

    标签: transactions apache-camel ibm-mq


    【解决方案1】:

    因为你已经处理了 JMS,我假设

    骆驼不应该承认

    您希望事务回滚而不是提交。

    简单地“按原样”回滚到 WMQ 是非常有问题的。如果您不采取预防措施,Camel 会再次找到该消息并尝试对其进行重新处理。第二次尝试很可能会再次失败并重复该过程。日志会很快填满。

    您应该在 WMQ 队列上指定“BONAME”和“BOTRESH”属性,并在重试几次后将回滚消息发送到死信队列。我认为默认的 WMQ DLQ 是SYSTEM.DEAD.LETTER.QUEUE

    【讨论】:

      猜你喜欢
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-10
      • 2013-05-23
      • 1970-01-01
      • 2012-09-09
      • 2012-05-09
      相关资源
      最近更新 更多