Ниже я пытаюсь достичь:
- Выберите файл из исходного каталога.
- Скопируйте этот файл в место назначения
каталог.
- Публикация сообщения в очереди на логику, откуда
другое приложение выбирает имя файла и обрабатывает его из
каталог назначения.
Проблема в том, что каждый раз, когда сервер weblogic перезапускается (из-за развертывания кода), маршрут Camel-JMS зависает и перестает работать до тех пор, пока сервер Camel route / Servicemix не будет перезапущен.
Ниже приведен код моего верблюжьего маршрута:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:camel="http://camel.apache.org/schema/spring"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
<!-- file name filter for Outgoing data file from weblogic -->
<bean id="outFilter" class="org.apache.camel.component.file.AntPathMatcherGenericFileFilter">
<property name="includes" value="**/*TEST*.csv"/>
</bean>
<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop>
<prop key="java.naming.provider.url">t3://<<servername>>:<<serverport>></prop>
<prop key="java.naming.security.principal">admin</prop>
<prop key="java.naming.security.credentials">admin123</prop>
</props>
</property>
</bean>
<bean id="jndiFactoryBean" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="weblogic.jms.ConnectionFactory"/>
<property name="jndiTemplate" ref="jndiTemplate"/>
<property name="lookupOnStartup" value="false"/>
<property name="proxyInterface" value="javax.jms.ConnectionFactory"/>
</bean>
<bean id="jndiDestinationResolver" class="org.springframework.jms.support.destination.JndiDestinationResolver">
<property name="jndiTemplate" ref="jndiTemplate"/>
</bean>
<bean id="jmsConfiguration" class="org.apache.camel.component.jms.JmsConfiguration">
<property name="connectionFactory" ref="jndiFactoryBean"/>
<property name="destinationResolver" ref="jndiDestinationResolver"/>
</bean>
<bean id="jms" class="org.apache.camel.component.jms.JmsComponent">
<property name="configuration" ref="jmsConfiguration" />
</bean>
<!-- Camel Context for WebLogic Environment -->
<camelContext xmlns="http://camel.apache.org/schema/spring" id="weblogic-uat-camelcontext">
<route id="testJMS">
<from uri="file:///C:/input&filter=#outFilter"/>
<log message="File transfer begin"/>
<doTry>
<to uri="file:///C:/output"/>
<setBody>
<simple>${header.CamelFileName}</simple>
</setBody>
<log message="The message contains file name ${body}" />
<to uri="jms:queue:jms/SampleQueue?jmsMessageType=Text"/>
<doCatch>
<exception>java.io.IOException</exception>
<handled>
<constant>false</constant>
</handled>
<log message="{{file.transferFailedMessage}}"/>
</doCatch>
</doTry>
<onCompletion onCompleteOnly="true">
<log message="File transfer complete"/>
</onCompletion>
</route>
</camelContext>
</beans>
Есть ли свойство / конфигурация в Camel JMS, которую можно настроить для обработки перезапуска сервера JMS, чтобы верблюд автоматически подключался к очередям weblogic при каждом перезапуске?