问题
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}}:{{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