Apache Camel: interceptFrom: Может ли транзакция, начатая в interceptFrom, использоваться в основном маршруте? - PullRequest
3 голосов
/ 28 мая 2020

У меня ниже пример кода , где я вызываю прямой транзакционный маршрут из « interceptFrom » маршрута InputQueue (основной маршрут). Здесь основной маршрут также транзакция .

При запуске я вижу из журнала, что транзакция запускается и фиксируется в interceptFrom, в то время как в основном маршруте начинается другая транзакция и

Мое требование: мне нужна одна транзакция, которая должна охватывать как fromIntercept, так и обработку основного маршрута, поскольку я выполняю некоторые операции с БД в fromIntercept и хочу, чтобы он откатился в случае любого исключения происходит на основном маршруте. Ниже представлен журнал:

@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))
...