当目的地不可用时如何停止使用骆驼路线中的消息
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当目的地不可用时如何停止使用骆驼路线中的消息相关的知识,希望对你有一定的参考价值。
我正在使用Camel桥接IBM和ActiveMQ队列。
一切正常,但是当目的地由于网络问题而变得不可用时,所有处理的消息都将丢失。
如果目的地不可用,骆驼应停止从原地消费,并在目的地可用时重新开始,但我找不到正确的模式/配置来做到这一点。
我正在配置从IBM MQ到IBM MQ的路由,但我正在寻找一种解决IBM和ActiveMQ的组合的方法。
<bean id="lsywmq" class="org.apache.camel.component.jms.JmsComponent">
<property name="connectionFactory">
<bean class="com.ibm.mq.jms.MQQueueConnectionFactory">
<property name="transportType" value="1" />
<property name="hostName" value="$mq_lsy_hostname" />
<property name="port" value="$mq_lsy_port" />
<property name="queueManager" value="$mq_lsy_queuemanager" />
<property name="channel" value="$mq_lsy_channel" />
<property name="useConnectionPooling" value="true" />
</bean>
</property>
</bean>
<bean id="wmq" class="org.apache.camel.component.jms.JmsComponent">
<property name="connectionFactory">
<bean class="com.ibm.mq.jms.MQQueueConnectionFactory">
<property name="transportType" value="1" />
<property name="hostName" value="$mq_hostname" />
<property name="port" value="$mq_port" />
<property name="queueManager" value="$mq_queuemanager" />
<property name="channel" value="$mq_channel" />
<property name="useConnectionPooling" value="true" />
</bean>
</property>
</bean>
<camelContext xmlns="http://camel.apache.org/schema/blueprint"
allowUseOriginalMessage="false" >
<route id="EFF2AVIO">
<from uri="lsywmq:queue:mq_lsy_queue"/>
<to uri="wmq:queue:mq_queue"/>
</route>
</camelContext>
我想让它作为管道工作,如果它卡在目标位置,则所有管道仍然卡住。
答案
要实现此行为,您需要将JMS组件的transacted
选项设置为true
<bean id="lsywmq" class="org.apache.camel.component.jms.JmsComponent">
<property name="connectionFactory">
<bean class="com.ibm.mq.jms.MQQueueConnectionFactory">
<property name="transportType" value="1" />
<property name="hostName" value="$mq_lsy_hostname" />
<property name="port" value="$mq_lsy_port" />
<property name="queueManager" value="$mq_lsy_queuemanager" />
<property name="channel" value="$mq_lsy_channel" />
<property name="useConnectionPooling" value="true" />
<property name="transacted" value="true"/>
</bean>
</property>
以上是关于当目的地不可用时如何停止使用骆驼路线中的消息的主要内容,如果未能解决你的问题,请参考以下文章
如何修复 PWA 审核中的“当 JavaScript 不可用时不提供后备内容”?
使用适用于 iOS 的 XMPP 框架:当订阅者可用/不可用时接收状态