请查看以下情景或骆驼路线
from("wmq:queue:eventQueue + "?useMessageIDAsCorrelationID=true")
.transacted()
.bean(orchestrator, "processMessage(${body}, ${headers})");
并且对于事务我正在维护JmsTransactionManager。请找到相同的。实际上,我已经阅读了“骆驼在行动”一书中的第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})都无法处理并抛出异常,则camel不应该确认,并且消息应该存在,因为它在WMQ内部。
请你帮我一下。
由于 萨蒂亚吉特
答案 0 :(得分:1)
当您处理JMS时,我假设
骆驼不应该承认
您希望事务回滚而不是提交。
简单地回滚到WMQ&#34;这是非常有问题的,因为它是&#34;。如果您不采取预防措施,Camel将再次找到该消息并尝试重新处理它。第二次尝试很可能再次失败并重复该过程。日志将很快填满。
你应该指定&#34; BONAME&#34;和&#34; BOTRESH&#34; WMQ队列上的属性,并在几次重试后将回滚消息返回到死信队列。我认为默认的WMQ DLQ是SYSTEM.DEAD.LETTER.QUEUE
。