【问题标题】:How to aggregate files in Mule ESB CE如何在 Mule ESB CE 中聚合文件
【发布时间】:2012-04-18 22:25:07
【问题描述】:

我需要在 Mule ESB CE 3.2.1 上在内存中聚合多个 csv 入站文件,如有必要对它们重新排序。

我该如何实现这种逻辑?

我尝试使用 message-chunking-aggregator-router,但它在启动时失败,因为 xsd 架构不接受这样的配置:

<message-chunking-aggregator-router timeout="20000" failOnTimeout="false" >
            <expression-message-info-mapping correlationIdExpression="#[header:correlation]"/>
</message-chunking-aggregator-router>

我还尝试将我的相关 ID 附加到入站消息,然后由自定义聚合器处理它们,但我发现 Mule 内部使用由以下各项组成的密钥:

Serializable key=event.getId()+event.getMessage().getCorrelationSequence();//EventGroup:264

内部 id 每次都不同(如果相关序列正确的话):这样,Mule 不会像我预期的那样只使用相关序列,并且相同的消息会被处理多次。

最后,我可以重新编写自定义聚合器,但我想使用更统一的技术。

提前致谢,

加布里埃尔


更新

我已尝试使用 message-chunk-aggregator,但它不符合我的要求,因为它承认重复。

我尝试详细说明我需要涵盖的场景:

  1. Mule 轮询(在 SFTP 位置上)
  2. 检测到文件 1“FIXEDPREFIX_1_of_2.zip”并将其保存在内存中的某处(作为打开的 SFTPStream,没关系)。 为分组保留了一些相关信息:组、序列、组大小。
  3. 再次检测到文件 1“FIXEDPREFIX_1_of_2.zip”,但无法插入,因为会重复
  4. 检测到文件 2“FIXEDPREFIX_2_of_2.zip”,并正确添加
  5. 表示已达到组大小,Mule 使用正确的消息集路由 MessageCollection

关于第 2 点,我很幸运能够从文件名中获取信息并将它们放入 MuleMessage::correlation* 属性中,以便后续组件可以使用它们。

我做了,但重复的处理方式相同。

再次感谢

加布里埃尔

【问题讨论】:

    标签: file esb mule correlation aggregator


    【解决方案1】:

    【讨论】:

    • 感谢大卫,我在原始帖子中添加了更多详细信息以更好地解释必要条件。
    • 能否在聚合器前面放置一个幂等消息过滤器 (mulesoft.org/documentation/display/MULE3USER/…) 以删除重复项?
    • 谢谢。此过滤器在删除重复项方面效果很好。我只需要编写一个可以返回 MessageCollection 的简单自定义聚合器,而不是链接文件集,现在满足要求;)
    • 那么,哼哼,我想你可以,像,接受这个答案? 眨眼眨眼轻推 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 2015-02-18
    • 1970-01-01
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多