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