Параллельная обработка верблюда: RouteDefinition не может быть приведена к org.apache.camel.model.TryDefinition - PullRequest
0 голосов
/ 06 мая 2019

У меня ниже верблюжий маршрут, который отлично работает, когда я закомментирую parallelProcessing() часть и коррозионную end(), но когда я включаю parallelProcessing(), я получаю ошибку ниже.

org.apache.camel.spring.boot.CamelSpringBootInitializationException: java.lang.ClassCastException: org.apache.camel.model.RouteDefinition cannot be cast to org.apache.camel.model.TryDefinition

Я что-то пропустил end()?

from("direct:resetRoute")
    .routeId("r-route")
    .log("Starting r-route")
    .doTry()
        .bean(transactionManager, "beginTransaction()")
        .bean(clientApi, "search(${body},${header.region})")
        .setHeader("transactionSize", simple("${body.size()}"))
        .process(objectToXmlProcessor)
        .process(e -> {
            TransactionMaster transactionMaster = transactionMasterService.saveTransactionMaster(String.valueOf(e.getIn().getHeader(Constants.HEADER_1)));
            e.getIn().setHeader(Constants.HEADER_2, transactionMaster);
        })
        .split(simple("${body}"))
            .parallelProcessing()
            .doTry()
                .process(e -> {
                    Transaction transaction = transactionService.saveTransaction((TransactionMaster) e.getIn().getHeader(Constants.HEADER_2),
                            ((StsTxn) e.getIn().getBody()).getTxnId());
                    e.getIn().setHeader(Constants.HEADER_3, transaction);
                })
                .bean(transformationService, "tranform")
                .process(objectToXmlProcessor)
                .process(e -> {
                    Transaction transaction = transactionService.updateMsg(String.valueOf(e.getIn().getBody()), (Transaction) e.getIn().getHeader(Constants.HEADER_3));
                    e.getIn().setHeader(Constants.HEADER_3, transaction);
                })
                .bean("{{t-p.mqservice}}")
                .process(e -> {
                    Transaction transaction = (Transaction) e.getIn().getHeader(Constants.HEADER_3);
                    transactionService.updateMsgStatus(transaction, MsgStatus.SUCCESS);
                })
            .endDoTry()
            .doCatch(Exception.class)
                .log(LoggingLevel.ERROR, "TRANSACTION-EXCEPTION : ${exception.stacktrace}") 
                .process(e -> {
                    Transaction transaction = (Transaction) e.getIn().getHeader(Constants.HEADER_3);
                    transactionService.updateMsgStatus(transaction, MsgStatus.FAILURE);
                })
            .end()
            .end() // End of parallelProcessing()
        .end()// End of split()
        .process(c -> {
            TransactionMaster transactionMaster = (TransactionMaster) c.getIn().getHeader(Constants.HEADER_2);
            transactionMasterService.updateMsgStatus(transactionMaster, MsgStatus.SUCCESS);
        })
        .bean(transactionManager, "markSuccess")
    .endDoTry() // End of doTry()
    .doCatch(Exception.class)
        .bean(transactionManager, "markFailure")
        .log(LoggingLevel.ERROR, "TRANSACTION-MASTER-EXCEPTION : ${exception.stacktrace}")
    .end(); // End of doCatch()

Полная трассировка стека

org.apache.camel.spring.boot.CamelSpringBootInitializationException: java.lang.ClassCastException: org.apache.camel.model.RouteDefinition cannot be cast to org.apache.camel.model.TryDefinition
    at org.apache.camel.spring.boot.RoutesCollector.onApplicationEvent(RoutesCollector.java:149)
    at org.apache.camel.spring.boot.RoutesCollector.onApplicationEvent(RoutesCollector.java:54)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:398)
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:355)
    at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:882)
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.finishRefresh(ServletWebServerApplicationContext.java:161)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549)
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:316)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248)
    at g.tp.MainApplication.main(MainApplication.java:58)
Caused by: java.lang.ClassCastException: org.apache.camel.model.RouteDefinition cannot be cast to org.apache.camel.model.TryDefinition
    at org.apache.camel.model.ProcessorDefinition.endDoTry(ProcessorDefinition.java:1036)
    at g.tp.route.ResetRoute.configure(ResetRoute.java:147)
    at org.apache.camel.builder.RouteBuilder.checkInitialized(RouteBuilder.java:432)
    at org.apache.camel.builder.RouteBuilder.configureRoutes(RouteBuilder.java:399)
    at org.apache.camel.builder.RouteBuilder.addRoutesToCamelContext(RouteBuilder.java:380)
    at org.apache.camel.impl.AbstractCamelContext.lambda$addRoutes$0(AbstractCamelContext.java:997)
    at org.apache.camel.impl.AbstractCamelContext.doWithDefinedClassLoader(AbstractCamelContext.java:3205)
    at org.apache.camel.impl.AbstractCamelContext.addRoutes(AbstractCamelContext.java:997)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...