如何在Mule ESB CE中聚合文件

时间:2012-04-16 12:39:58

标签: file esb mule correlation aggregator

我需要在Mule ESB CE 3.2.1上聚合内存中的一些csv入站文件,如果需要,重新排序它们。

我怎样才能实现这种逻辑?

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

<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
  6. 关于第2点,我很幸运能从文件名中获取信息并将它们放入MuleMessage :: correlation *属性中,以便后续组件可以使用它们。

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

    再次感谢

    加布里埃尔