Проверка погоды Процессор устанавливает любое обменное сообщение или нет в Camel router - PullRequest
0 голосов
/ 21 февраля 2020

Я просто пытаюсь создать маршрут с несколькими процессорами. Можно ли проверить погоду какой-либо конкретный процессор устанавливает какой-либо обмен или нет. Я пытаюсь проверить поле сообщения в теле xml, если сообщение является приветствием, тогда я устанавливаю тело обмена и отправляю в очередь 3, если условие не выполняется, я не должен отправлять сообщения в очередь 3

XML Ввод:

<Header>
   <MessageID>1</MessageID>
   <Sender>ABC</Sender>
</Header>
<Body>
   <Message>Hello</Message>
</Body>

ROute:

from(queue1)
.process(processorA).to(queue2)
.process(processsorB).to(queue3)
.process(ProcessorC).to(queue4)
.end()

Процессор B:

if(xmlmessage.getbody().getMessage() == "Hello")
{
  exchange.genIn().setBody("World");
} else {
  exchange.getIn().setBody(null);
}

В приведенном выше маршруте я просто хочу проверить, работает ли погодный процессорB любое сообщение обмена или нет. Так я могу сделать это в маршрутизаторе? или есть ли другие способы, которыми я могу реализовать эту логику c. Я пробовал разные варианты, но не работает. открыт для любых предложений

Спасибо

1 Ответ

1 голос
/ 21 февраля 2020

Если вам нужно проверить тело на нулевое значение после процессора B, сделайте, как показано ниже:

from(queue1)
.process(processorA).to(queue2)
.process(processsorB).to(queue3)
.choice()
 .when(body().isNotNull())
     .process(ProcessorC).to(queue4)
 .otherwise()
     //do something
 .endChoice()
 .end()

Дополнительная информация о choice

...