0

我正在尝试使用 Mule 3.2.0 s Collection Aggregator。我尝试使用 Mule Studio,但似乎仍然无法在 Mule Studio 中进行配置,尽管该图标确实出现在“流控制”部分。我的用例是 - 我从 VM 入站端点收到一条消息。我现在想将它传递给 3 个不同的流——都使用相同的请求对象但执行不同的操作——比如 A、B、C。它们都更新了各自的数据库,但它们都是公共 Order_ID 的一部分(我们应用程序的内部部分)。这 3 个进程可能需要不同的处理时间,但一旦完成,它们中的每一个都会返回相同的成功响应。我想使用一个聚合器来聚合所有这些响应而不会超时,然后将其转发到 Java 组件或另一个 VM 端点以进行进一步处理。

4

2 回答 2

4

而不是Collection Aggregator使用All消息处理器。它向其中的每个处理器发送相同的消息,并在它们完成后聚合结果。

http://www.mulesoft.org/documentation/display/MULE3USER/Routing+Message+Processors#RoutingMessageProcessors-All

示例配置:(我将“foo”发送到 vm 端点)

<flow name="main" processingStrategy="asynchronous">
    <vm:inbound-endpoint path="in"/>
    <all>
        <flow-ref name="flow1"/>
        <flow-ref name="flow2"/>
    </all>

    <logger message="#[payload:]" level="INFO"/>
</flow>

<flow name="flow1">
    <append-string-transformer message="bar1"/>
</flow>

<flow name="flow2">
    <append-string-transformer message="bar2"/>
</flow>

控制台输出:

INFO  2012-08-15 17:26:01,749 [main.stage1.02] org.mule.api.processor.LoggerMessageProcessor: [foobar1, foobar2]

高温高压

于 2012-08-14T17:50:09.213 回答
0

我会使用 ALL 组件,您使用的端点应该是请求-响应(流等待响应的双向)。

因此,ALL 组件将聚合响应,然后返回一个 CopyOnWriteArrayList,其中包含来自流 A、B 和 C 的所有响应。您可以通过在 java 类中扩展 AbstractTransformer 来使用自定义转换器以任何所需的方式转换此数组列表。

干杯,纳文拉吉

于 2013-09-13T05:42:27.193 回答