0

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

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

我想在我的编排服务中拆分此请求消息,并希望将对象classA作为请求发送到dest1和发送classBdest2,然后将聚合输出发送到客户端。我正在使用 Apache Camel。大多数情况下,我能找到的只是在 XPath 或其他东西上进行拆分,但无法获得任何帮助。我想到的一种解决方案是使用多播模式。

4

2 回答 2

0

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

否则,我建议使用多播发送到两条路由。在这些路线中,将身体分别更改为body.getClassA()body.getClassB()。在每条路线结束时,您可以更新原始正文。这可以通过在设置正文之前将原始正文放入标题中来完成。

于 2013-09-23T16:23:07.077 回答
0

也许您可以将这两个项目分解为两个不同的请求对象,例如 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>

或者与使用基于内容的路由 EIP的拆分器类似的东西?

于 2013-09-25T20:46:19.837 回答