сохранить исходное сообщение, используемое ДЛЯ

#java #groovy #apache-camel

#java #groovy #apache-верблюд

Вопрос:

Я новичок в мире верблюдов. Я написал некоторый код, он выглядит уродливо:

    from('component:params')
        .process(someValidator())
        .process{
            def producerTemplate = lookup('template', ProducerTemplate.class)
            // I create NEW exchange because I need original in.body data in next routers
            def exchange = new DefaultExchange(context)
            exchange.in.body = someTransformation(it.in.body)
            def result = producerTemplate.send(SOMEWHERE, exchange)
            if (result.exception) throw result.exception
        }
        .process(someActionWithOriginalExchange(it.body.in))
 

Я создал здесь класс обмена дополнениями. Я не думаю, что это хорошая идея.
Но когда я пытаюсь переписать его, используя «transform» и «to», я столкнулся с некоторой проблемой:

     from('component:params')
        .process(someValidator())
        .process{// or maybe transform, I guess it doesn't matter here
            it.in.body = someTransformation(it.in.body)
        }
        .to(SOMEWHERE)
        .process(someActionWithOriginalExchange(??? how can I get original exchange????))
 

Я не понимаю, как я могу сохранить исходное тело сообщения?

Комментарии:

1. предлагаю оценить код на этой странице camel.apache.org/file.html

Ответ №1:

вы можете просто вызвать exchange.getUnitOfWork().getOriginalInMessage() внутри компонента или процессора