Получение AtomikosTransactionRequiredJMSException при агрегировании сообщений из 2 разных очередей в Apache Camel - PullRequest
0 голосов
/ 08 октября 2018

Я хочу объединить два разных типа сообщений из двух разных очередей в одно сообщение.Я использую приведенную ниже конфигурацию в моем файле маршрутов

from("activemq:queue1") //Receiving object of type A
.to ("direct:a");

from("activemq:queue2") //Receiving object of type B
.to ("direct:a");

from("direct:a") 
.aggregate().header("MCP_CORRELATION_ID")
.aggregationStrategy(new GroupedExchangeAggregationStrategy())
.completionPredicate(somePredicateCondition)
.completionTimeout(2000)
.to("direct:processAggregatedResult");

В тестовых случаях Cucumber это работает абсолютно нормально.Но когда я на самом деле выполняю этот код, то, когда мое сообщение достигает маршрута агрегатора, оно выдает ниже исключения:

CamelExceptionCaught=org.springframework.jms.UncategorizedJmsException: Uncategorized exception occurred during JMS processing; nested exception is com.atomikos.jms.AtomikosTransactionRequiredJMSException: The JMS session you are using requires a JTA transaction context for the calling thread and none was found.
Please correct your code to do one of the following: 
1. start a JTA transaction if you want your JMS operations to be subject to JTA commit/rollback, or
2. increase the maxPoolSize of the AtomikosConnectionFactoryBean to avoid transaction timeout while waiting for a connection, or
3. create a non-transacted session and do session acknowledgment yourself, or
4. set localTransactionMode to true so connection-level commit/rollback are enabled.,
...