Я соединяю очереди IBM и ActiveMQ с Camel.
Все работает нормально, но когда место назначения становится недоступным из-за проблем с сетью, все обработанные сообщения теряются.
Верблюд должен перестать потреблятьиз источника, если пункт назначения недоступен, и запускайте его снова, когда он становится доступным, но я не могу найти правильный шаблон / конфигурацию для этого.
Я настраиваю маршруты, подобные следующему из 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>
Я бы хотел, чтобы он работал как конвейер, если он застрянет в пункте назначения, все трубы останутся застрявшими.