Transaction not working with activemq + spring-integration + spring-jms

限于喜欢 提交于 2019-12-25 08:57:08

问题


My queue is not getting transacted. I want to that my message should again go in queue if any error occurs but message does not get transacted ( or does not again goes to the queue) Below is my camel configuration file

<bean id="txManager"
    class="org.springframework.jms.connection.JmsTransactionManager">
    <property name="connectionFactory" ref="amqConnectionFactory" />
</bean>

<bean id="jasypt"
    class="org.apache.camel.component.jasypt.JasyptPropertiesParser">
    <property name="password" value="*****" />
</bean>
<bean id="bridgePropertyPlaceholder"
    class="org.apache.camel.spring.spi.BridgePropertyPlaceholderConfigurer">
    <property name="location" value="classpath:jms-to-sql.cfg" />
    <property name="parser" ref="jasypt" />
</bean>
<bean id="amqConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL" value="${karaf-local.url}" />
    <property name="userName" value="${karaf-local.userName}" />
    <property name="password" value="${karaf-local.passwordEncrypted}" />
</bean>

<bean id="addAuthKey" class="com.xxx.addingAuthKey" />

<bean id="VadictRedeliveryPolicy" class="org.apache.camel.processor.RedeliveryPolicy">
    <property name="maximumRedeliveries" value="${maximumRedeliveries}" />
    <property name="retryAttemptedLogLevel" value="ERROR" />
    <property name="redeliveryDelay" value="${redeliveryDelayMilliSeconds}" />
    <property name="retriesExhaustedLogLevel" value="ERROR" />
    <property name="logStackTrace" value="true" />
    <property name="backOffMultiplier" value="2" />
    <property name="useExponentialBackOff" value="true" />
    <property name="logExhaustedMessageHistory" value="true"/>
    <property name="logExhaustedMessageBody" value="true"/> 
</bean>

<bean id="deadLetterErrorHandler" class="org.apache.camel.builder.DeadLetterChannelBuilder">
    <property name="deadLetterUri" value="jms:queue:{{karaf-local.queue}}&#58;{{DLCName}}" /> 
    <property name="redeliveryPolicy" ref="redeliveryPolicy" />
</bean>


<camelContext xmlns="http://camel.apache.org/schema/spring"
    trace="true">

        <route id="vadictQueue">
        <from
            uri="jms:{{karaf-local.queue}}?connectionFactory=#amqConnectionFactory" />
        <transacted/>
        <setProperty propertyName="api-username">
            <simple>{{api-username}}</simple>
        </setProperty>
        <setProperty propertyName="api-password">
            <simple>{{api-password}}</simple>
        </setProperty>
        <setProperty propertyName="grant_type">
            <simple>{{grant_type}}</simple>
        </setProperty>
        <setProperty propertyName="scope">
            <simple>{{scope}}</simple>
        </setProperty>
        <setProperty propertyName="client_secret">
            <simple>{{client_secret}}</simple>
        </setProperty>
        <setProperty propertyName="client_id">
            <simple>{{client_id}}</simple>
        </setProperty>          
        <setProperty propertyName="login_URL">
            <simple>{{login_URL}}</simple>
        </setProperty>          
        <setProperty propertyName="searchURL">
            <simple>{{searchURL}}</simple>
        </setProperty>
        <setProperty propertyName="assetGroupId">
            <simple>{{assetGroupId}}</simple>
        </setProperty>
        <process ref="addAuthKey" />

        <to uri="http://127.0.0.1:8080/api/measurement-events" />

    </route>
</camelContext>

来源:https://stackoverflow.com/questions/39983509/transaction-not-working-with-activemq-spring-integration-spring-jms

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!