Camel-JMS зависает каждый раз, когда связанный веб-сервер JMS перезапускается - PullRequest
0 голосов
/ 30 августа 2018

Ниже я пытаюсь достичь:

  1. Выберите файл из исходного каталога.
  2. Скопируйте этот файл в место назначения каталог.
  3. Публикация сообщения в очереди на логику, откуда другое приложение выбирает имя файла и обрабатывает его из каталог назначения.

Проблема в том, что каждый раз, когда сервер 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&amp;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 при каждом перезапуске?

...