#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()
внутри компонента или процессора