Transactions ApacheCamel:interceptFrom:在interceptFrom中启动的事务能否在主路由中共享?

Transactions ApacheCamel:interceptFrom:在interceptFrom中启动的事务能否在主路由中共享?,transactions,apache-camel,spring-transactions,intercept,Transactions,Apache Camel,Spring Transactions,Intercept,我有下面的代码示例,其中我从InputQueue路由(主路由)的“interceptFrom”调用直接的交易路由。在这里,主要路线也是进行交易的 在运行此命令时,我可以从日志中看到,在interceptFrom中启动并提交了一个事务,而在主路由中,另一个事务正在启动并提交 我的要求是,当我在fromIntercept中执行一些DB操作时,我需要一个单独的事务,该事务应包括fromIntercept和main route处理,并希望它在main route发生任何异常时回滚。以下是日志: @Com

我有下面的代码示例,其中我从InputQueue路由(主路由)的“interceptFrom”调用直接的交易路由。在这里,主要路线也是进行交易的

在运行此命令时,我可以从日志中看到,在interceptFrom中启动并提交了一个事务,而在主路由中,另一个事务正在启动并提交

我的要求是,当我在fromIntercept中执行一些DB操作时,我需要一个单独的事务,该事务应包括fromIntercept和main route处理,并希望它在main route发生任何异常时回滚。以下是日志:

@Component
public class DemoTransactionRoute extends SpringRouteBuilder {
    private static Logger logger = LoggerFactory.getLogger(DemoTransactionRoute.class);
    @Override
    public void configure() throws Exception {
        final String FROM_INTERCEPT_ROUTE = "direct://demoFromInterceptor";

        interceptFrom("activemq:*")
                .to(FROM_INTERCEPT_ROUTE);

        from(FROM_INTERCEPT_ROUTE)
                .routeId(FROM_INTERCEPT_ROUTE)
                .transacted("JPA_TRANSACTION") // defined in service xml
                .log(LoggingLevel.INFO, logger, "Inside From Interceptor");


        from("activemq:queue:InputQueue")
                .routeId("activemq:queue:InputQueue")
                .transacted("JPA_TRANSACTION") // defined in service xml
                .log("On service route");
    }
}

日志


2020-05-28 12:09:06.742 DEBUG 15936 --- [mer[InputQueue]] o.a.c.c.jms.EndpointMessageListener      : Received Message has JMSCorrelationID []
2020-05-28 12:09:06.785 DEBUG 15936 --- [mer[InputQueue]] o.apache.camel.processor.SendProcessor   : >>>> direct://demoFromInterceptor Exchange[ID-XYZA-Z123456-1590631725657-0-1]
2020-05-28 12:09:06.787 DEBUG 15936 --- [mer[InputQueue]] o.a.c.s.spi.TransactionErrorHandler      : Transaction begin (0x78d9f51b) redelivered(false) for (MessageId: ID:XYZA-Z123456-52145-1590554620554-4:5:1:1:1 on ExchangeId: ID-XYZA-Z123456-1590631725657-0-1))
2020-05-28 12:09:06.792  INFO 15936 --- [mer[InputQueue]] c.c.c.routes.DemoTransactionRoute        : Inside From Interceptor
2020-05-28 12:09:06.793 DEBUG 15936 --- [mer[InputQueue]] o.a.c.s.spi.TransactionErrorHandler      : Transaction commit (0x78d9f51b) redelivered(false) for (MessageId: ID:XYZA-Z123456-52145-1590554620554-4:5:1:1:1 on ExchangeId: ID-XYZA-Z123456-1590631725657-0-1))
2020-05-28 12:09:06.793 DEBUG 15936 --- [mer[InputQueue]] o.a.c.s.spi.TransactionErrorHandler      : Transaction begin (0x78d9f51b) redelivered(false) for (MessageId: ID:XYZA-Z123456-52145-1590554620554-4:5:1:1:1 on ExchangeId: ID-XYZA-Z123456-1590631725657-0-1))
2020-05-28 12:09:06.793  INFO 15936 --- [mer[InputQueue]] activemq:queue:InputQueue                : On service route
2020-05-28 12:09:06.793 DEBUG 15936 --- [mer[InputQueue]] o.a.c.s.spi.TransactionErrorHandler      : Transaction commit (0x78d9f51b) redelivered(false) for (MessageId: ID:XYZA-Z123456-52145-1590554620554-4:5:1:1:1 on ExchangeId: ID-XYZA-Z123456-1590631725657-0-1))