有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在camel中为不同的目的地拆分请求消息?

我有一条请求消息,格式如下:

Class RequestMessage{
    private ClassA classA;
    private ClassB classB;
}

我希望在编排服务中拆分此请求消息,并希望将对象classA作为请求发送到dest1classB发送到dest2,然后将聚合输出发送到客户端。我正在使用apachecamel。大多数情况下,我所能找到的只是关于XPath之类的东西,但没有得到任何帮助。我想到的一个解决方案是使用多播模式


共 (2) 个答案

  1. # 1 楼答案

    这似乎是拆分器/聚合器模式

    否则,我建议使用多播发送到两个路由。在这些路径中,将实体分别更改为body.getClassA()body.getClassB()。在每条路线的末尾,您可以更新原始主体。这可以通过在设置主体之前将原始主体放入标题中来实现

  2. # 2 楼答案

    也许您可以将这两个项分解为两个不同的请求对象,比如RequestMessageA和RequestMessageB(可能使用它们都扩展的基类或接口,比如BaseRequestMessage)。然后,您可以在路由中使用一个拆分器来拆分您的请求(例如,如果您的两个请求都在一个列表中),然后将每个味道路由到所需的目的地

    例如,在Spring DSL中(伪代码,未测试):

    <split>
       <simple>${body}</simple>
       <choice>
          <when>
             <simple>${body} is RequestA</simple>
             <to uri="dest1"/>
          </when>
          <otherwise>
            <to uri="dest2"/>
          </otherwise>
       </choice>
    </split>
    

    或者类似于使用content based routing EIP的拆分器