首页 > 解决方案 > 检查天气处理器是否在骆驼路由器中设置任何交换消息

问题描述

我只是想用多个处理器创建一个路由。是否可以检查天气任何特定处理器是否设置任何交换。我正在尝试检查 xml 正文中的消息字段,如果 Message 是 hello 然后我正在设置交换正文并发送到 queue3 如果条件失败我不应该向 queue3 发送任何消息

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-bootapache-camelactivemq

解决方案


如果您需要在处理器B 之后检查正文是否为空,请执行以下操作:

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

有关选择的更多信息


推荐阅读