2016-07-16 3 views
1

Например:как установить свойство обмена глобально в Apache Camel

from("direct:test") 
    .multicast() 
    .to("direct:req1","direct:req2"); 

from("direct:req1") 
    .to(cxf:bean:endpoint1) 
    .process("response1"); 

from("direct:req2") 
.process("requestProcessor2") 
.to(cxf:bean:endpoint2) 
.process(response2); 

Я новичок в Apache Camel, я просто хочу знать, есть ли способ, чтобы использовать ответ, который я получаю от endpoint1 в " requestProcessor2 ".

+0

есть ли способ задать свойство, которое доступно по всему миру во всех процессорах? –

ответ

0

У вас вопрос уже есть ответ, используйте, и вы можете получить имущество из биржи в зависимости от того, какой маршрут вы хотите. Также рассмотрите возможность удаления свойства на конечном маршруте.

4

Вы могли бы сделать что-то вроде этого

from("direct:test") 
      .setProperty("test.body", body()) 
      .to(cxf:bean:endpoint1) 
      .setProperty("endpoint1.body", body()) 
      .process("response1") 
      .setBody(exchangeProperty("test.body")) 
      .to("direct:req2") 

    from("direct:req2") 
      .process("requestProcessor2") 
      .to(cxf:bean:endpoint2) 
      .process(response2); 

Вы сохранить первоначальное тело в собственности, а также тела от endpoint1. Затем вы отправляете обмен, чтобы направить: req2 с исходным телом в тело exhcnage и тело end_1 формы тела в свойстве, к которому вы можете получить доступ (в вашем процессоре или где).

Чтобы получить доступ к свойству в процессоре:

public void process(final Exchange exchange) throws Exception { 

    Object body = exchange.getProperty("endpoint1.body"); 

} 
+0

это помогло мне !! Спасибо !! –

+0

добро пожаловать! –

 Смежные вопросы

  • Нет связанных вопросов^_^