【问题标题】:Mule Collection aggregator骡子集合聚合器
【发布时间】:2012-08-10 21:17:04
【问题描述】:

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

【问题讨论】:

    标签: esb mule


    【解决方案1】:

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

    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]
    

    HTH

    【讨论】:

    • 谢谢丹尼尔。我猜您指的是上面链接中的这一位 - “目标返回的所有消息(如果有)都聚合在一起并形成来自该处理器的响应。”然而,这并没有真正以这种方式与 ALL 一起工作。我现在实际上正在使用 ALL,它只是将消息转发给他们所有人,他们在各自的流程结束时消失了。如果我在 ALL 之后添加另一个 Java 组件,它会在消息传递到 3 个 ALL 目标后立即被调用,并且不会真正等待来自 3 的响应。你有示例配置吗?谢谢
    • 这可能是因为您从 ALL 调用 A、B 和 C 流的方式是异步的(即one-way)。
    • 用示例配置更新了我的答案,效果很好。您能否提供有关您的流程配置的更多详细信息?
    • 谢谢丹尼尔。有些工作有点偏离轨道。我会在一天内尝试这个,然后回来更新。欢呼
    【解决方案2】:

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

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

    干杯, 纳文·拉吉

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-08
      • 2021-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多