将多个消息路由到Apache骆驼中的同一流

时间:2020-01-08 09:04:41

标签: java apache-camel

我想到了一个场景,其中我将创建多个XML消息并将其设置为Exchange对象的一部分。

如何在路由器中将交换主体中设置的多个消息部分路由到同一流?基本上,我必须将两组不同的消息作为属性的一部分发送给MQ。

处理器代码

public void process(Exchange exchange) throws Exception {
exchange.setProperty("msg1", xml1);
exchange.setProperty("msg2",xml2);
}

路由器代码

@Override
    public void configure() {
from("solace:q")
.process(aboveProcessor)
..?//code to route both messages as two different messages to same MQ.
}

如果我应该使用其他方法,请告诉我。

1 个答案:

答案 0 :(得分:1)

您可以设置处理器中的列表,将正文设置为结果列表,而不是设置始终不随JMS消息一起发送的Exchange属性。

public void process(Exchange exchange) throws Exception {
    List<Object> list = new ArrayList<Object>();
    list.add( xml1 );
    list.add( xml2 );
    exchange.getIn().setBody( list );
}

然后拆分列表,然后发送到您的队列:

from("solace:q")
  .process(aboveProcessor)
  .split(body())
    .to("mq:myQueue");

这假定您要将两个XML文档中的每个文档发送到相同的队列,并使用相同的消息头。