java如何在camel中为不同的目的地拆分请求消息?
我有一条请求消息,格式如下:
Class RequestMessage{
private ClassA classA;
private ClassB classB;
}
我希望在编排服务中拆分此请求消息,并希望将对象classA
作为请求发送到dest1
和classB
发送到dest2
,然后将聚合输出发送到客户端。我正在使用apachecamel。大多数情况下,我所能找到的只是关于XPath之类的东西,但没有得到任何帮助。我想到的一个解决方案是使用多播模式
# 1 楼答案
这似乎是拆分器/聚合器模式
否则,我建议使用多播发送到两个路由。在这些路径中,将实体分别更改为
body.getClassA()
和body.getClassB()
。在每条路线的末尾,您可以更新原始主体。这可以通过在设置主体之前将原始主体放入标题中来实现# 2 楼答案
也许您可以将这两个项分解为两个不同的请求对象,比如RequestMessageA和RequestMessageB(可能使用它们都扩展的基类或接口,比如BaseRequestMessage)。然后,您可以在路由中使用一个拆分器来拆分您的请求(例如,如果您的两个请求都在一个列表中),然后将每个味道路由到所需的目的地
例如,在Spring DSL中(伪代码,未测试):
或者类似于使用content based routing EIP的拆分器