Как я могу скопировать заголовок из родительского обмена в дочерний обмен после вызова split? - PullRequest
0 голосов
/ 04 июня 2019

У меня есть код ниже. Заголовок fireTime доступен до разделения, я хочу использовать его и после вызова разделения, что недоступно для логов.Верблюжья версия в поме 2.17.3.И код, и журналы приведены ниже.

@Override
    public void configure() throws Exception 
    {
        LOGGER.debug("Configuring client for UnicomOrderReader::synchInventoryAndOrders");

        from("quartz2://timer1?cron=0 0 * ? * * *")
            .log(" Unicom Job fired at ${header.fireTime}")
                .process(activeInitializedClientTaskProcessor)
                    .split(simple("${body}"))
                        .log("After Split Unicom Job fired at ${header.fireTime}")
                            .to("activemq:queue:" + ActiveMQNames.UNICOM_INVENTORY_ORDER_READER_QUEUE)
                                .log("Executed route to sync inventory and orders from Unicom ");
    }   

выводится журналов, как показано ниже: -

oms-04 Jun 2019 12:00:00,048 INFO DefaultQuartzScheduler-camel-1_Worker-1 [route42] -  Unicom Job fired at Tue Jun 04 12:00:00 IST 2019
oms-04 Jun 2019 12:00:00,280 INFO DefaultQuartzScheduler-camel-1_Worker-1 [route42] - After Split Unicom Job fired at
oms-04 Jun 2019 12:00:00,298 INFO DefaultQuartzScheduler-camel-1_Worker-1 [route42] - After Split Unicom Job fired at
oms-04 Jun 2019 12:00:00,312 INFO DefaultQuartzScheduler-camel-1_Worker-1 [route42] - After Split Unicom Job fired at
oms-04 Jun 2019 12:00:00,317 INFO DefaultQuartzScheduler-camel-1_Worker-1 [route42] - After Split Unicom Job fired at
oms-04 Jun 2019 12:00:00,322 INFO DefaultQuartzScheduler-camel-1_Worker-1 [route42] - After Split Unicom Job fired at
oms-04 Jun 2019 12:00:00,327 INFO DefaultQuartzScheduler-camel-1_Worker-1 [route42] - After Split Unicom Job fired at
oms-04 Jun 2019 12:00:00,332 INFO DefaultQuartzScheduler-camel-1_Worker-1 [route42] - After Split Unicom Job fired at

1 Ответ

0 голосов
/ 04 июня 2019

Вы можете хранить переменные в свойствах и использовать их позже в цепочке, см. .setProperty("myHeader", header("theheadername")) ниже:

@Override
public void configure() throws Exception 
{
    LOGGER.debug("Configuring client for UnicomOrderReader::synchInventoryAndOrders");

    from("quartz2://timer1?cron=0 0 * ? * * *")
        .log(" Unicom Job fired at ${header.fireTime}")
            .process(activeInitializedClientTaskProcessor)
            .setProperty("myHeader", header("theheadername"))
                .split(simple("${body}"))
//here you can access ${property.myHeader} for example by passing it as an argument to a bean method
                    .bean(myBean, "myMethod(${property.myHeader}, ${Body})")
                    .log("After Split Unicom Job fired at ${header.fireTime}")
                        .to("activemq:queue:" + ActiveMQNames.UNICOM_INVENTORY_ORDER_READER_QUEUE)
                            .log("Executed route to sync inventory and orders from Unicom ");
}  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...