检查天气处理器是否在 Camel 路由器中设置任何交换消息

问题描述 投票:0回答:1

我只是想创建一条具有多个处理器的路线。是否可以检查任何特定处理器是否正在设置任何交换。我正在尝试检查 xml 正文中的消息字段,如果消息是 hello 那么我正在设置交换正文并发送到队列3,如果条件失败我不应该向队列3发送任何消息

XML 输入:

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

路线:

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是否设置了任何交换消息。那么我可以在路由器中做到这一点吗?或者有没有其他方法可以实现这个逻辑。我尝试了不同的选择但不起作用。欢迎任何建议

谢谢

spring-boot apache-camel
1个回答
1
投票

如果您需要在processorB之后检查body是否为空,请执行以下操作:

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

有关选择

的更多信息
© www.soinside.com 2019 - 2024. All rights reserved.