故事到此为止
我有一个 SOAP 服务,它将其响应(比如 Response_A)发送到 <all> 流。在流内部,有三个 SOAP 服务(例如 B、C 和 D)从 Response_A 获取输入。我从 Response_A 获取字段并使用 XSLT,我可以为 B、C 和 D 制定请求。
快速提问:我在 <all> 中使用 <async> 块来并行处理消息。在其中使用 <all> 和 <processor-chain> 标记时,处理不是并行的。任何想法为什么?
路线图
我将读取所有三个 B、C 和 D 的响应并将它们组合成一个响应(可能再次使用 XSLT)并将其发送给 E。
路障
退出 <all> 流程后,我得到了一个 MuleMessageCollection。如何阅读它,并将消息组合成一条消息?
我的尝试
我尝试根据关联 ID 聚合消息,但我注意到仅当来自 A 的消息被 <all> 标记拆分并发送到 B、C 和 D 时才会出现关联 ID。关联 ID 在作为来自这些服务的响应的 SOAP 信封,即使我将enableMuleSoapHeaders设置为 true。我无法修改服务。那么,如何使相关 id 出现在 SOAP 响应中(如果我想合并消息,则绝对需要相关 id)
我猜我还需要组大小来聚合消息。
我什至尝试使用消息属性转换器添加相关 ID,但它没有那样工作。我被 MessageCollection 卡住了,不知道如何阅读它,即使里面可能有带有相关 id 的消息。
所以,归结为一个问题。合并来自 MessageCollection 的消息的方法是什么?
我想在 xml 中执行此操作,而不用 Java 编写自定义转换器。可能吗?我的方法应该是什么?
注意:来自 B、C 和 D 的响应消息具有不同的 DOM 结构。我要创建的合并消息与 A、B、C 和 D 的所有响应和请求具有不同的 DO。
如果有帮助,我会尝试处理此处描述的类似情况:http ://ricston.com/blog/?p=640唯一的区别是,我使用的是流和 all 标签。