java - 在apachecamel中将多个消息路由到同一个流

标签 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.
}

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

最佳答案

您可以在处理器中填充一个列表,并将正文设置为结果列表,而不是设置 Exchange 属性(无论如何,这些属性都不会与 JMS 消息一起发送):

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 文档发送到同一队列,并且具有相同的消息 header 。

关于java - 在apachecamel中将多个消息路由到同一个流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59642495/

相关文章:

java - JFrame 不绘制矩形

java - 如果初始化对象涉及检查异常处理,如何使用枚举创建单例

java.util.Date 特殊日期 1980-04-06 : wrong hour

java - Apache Camel 处理 XML 文件中声明的编码

java - 如何用camel编写jsonpath来选择json文件中的项目

java - 如何使 Camel 在拆分器组件后不回滚更改

apache-camel - 当 activemq 不工作时,所有 Camel 路由都会停止

java - Android Studio 中的模块图标是什么意思?

java - 正则表达式与前面的精确文本匹配或不匹配

java - 使用 Spring Boot 设置 Camel 和 Activemq