我有一条请求信息,格式为:
Class RequestMessage{
private ClassA classA;
private ClassB classB;
}
我想在我的业务流程服务中拆分此请求消息,并希望将对象classA
作为请求发送到dest1
和classB
到dest2
,然后发送聚合输出对客户。我正在使用Apache Camel。大多数情况下,我所能找到的只是拆分XPath或其他东西,但无法得到任何帮助。我想到的一个解决方案是使用多播模式。
答案 0 :(得分:0)
这看起来像分裂器/聚合器模式。
否则,我建议使用多播发送到两条路由。在这些路线中,将主体分别更改为body.getClassA()
和body.getClassB()
。在每条路线的末尾,您可以更新原始身体。这可以通过在设置主体之前将原始主体放入标题中来完成。
答案 1 :(得分: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>
与分割器类似的东西