Soap Fuse ESB:来自中间服务的CXF消息扩展

Soap Fuse ESB:来自中间服务的CXF消息扩展,soap,soa,esb,jbossfuse,Soap,Soa,Esb,Jbossfuse,我想实现以下场景: FUSE中的CXF路由接收SOAP请求,从请求中提取大量ID,使用ID创建不同的SOAP消息,将其发送到服务a。此服务使用与这些ID相关联的数据进行回复,路由应将这些数据插入原始消息,并将其发送到最终目的地服务。 因此,简而言之,在将消息发送到最终目的地之前,我们必须绕道而行,并使用来自中间服务的数据丰富原始消息。 我正在研究正确的配置(我们正在使用Fuse ESB 6.2预发行版和基于Spring的blueprint XML) 更新我正在更新我的答案,因为经过一系列的尝试和

我想实现以下场景: FUSE中的CXF路由接收SOAP请求,从请求中提取大量ID,使用ID创建不同的SOAP消息,将其发送到服务a。此服务使用与这些ID相关联的数据进行回复,路由应将这些数据插入原始消息,并将其发送到最终目的地服务。 因此,简而言之,在将消息发送到最终目的地之前,我们必须绕道而行,并使用来自中间服务的数据丰富原始消息。 我正在研究正确的配置(我们正在使用Fuse ESB 6.2预发行版和基于Spring的blueprint XML)


更新我正在更新我的答案,因为经过一系列的尝试和错误,我的问题完全解决了。

好的,实际工作的版本是:

路由配置: 扩展调用必须是同一驼峰上下文中的单独路由:

<route id="direct:enrichroute">
            <from uri="direct:enrichroute"/>
            <bean ref="processorBean"/>
            <to uri="cxf:bean:intermediateEndpoint"/>
</route>
聚合策略类:

public class AggregationStrategyBean implements AggregationStrategy {

    @Override
    public Exchange aggregate(Exchange originalExchange, Exchange intermediateExchange) {
    }
}
我发现这是一个很好的起点,但它在丰富通话中使用了相同的信息。
public class ProcessorBean implements Processor {

    @Override
    public void process(Exchange exchange) throws Exception {
        // original request body can be fetched from exchange
        // we can override the request body before sending it 
        exchange.getIn().setBody(newRq);
    }
}
public class AggregationStrategyBean implements AggregationStrategy {

    @Override
    public Exchange aggregate(Exchange originalExchange, Exchange intermediateExchange) {
    }
}