骡子:如何跟踪不可删除的&不可移动的文件

时间:2014-06-19 16:13:29

标签: java file version-control mule mule-studio

我有一个目录,其中包含无法删除的文件,因为它们被其他应用程序使用或具有只读属性。这意味着我无法像Mule那样移动或删除文件作为自然文件跟踪系统。为了在Mule到达时通过Mule处理这些文件,或者在没有从原始目录中删除/移动它们而更新它们,我需要某种自定义跟踪。要做到这一点,我想我需要添加一些规则,并能够跟踪以下文件:

  • 新文件
  • 已处理的文件
  • 更新文件

为此,我想在同一个目录中有一个日志文件,它会按名称和日期修改跟踪每个文件,但我不确定这是否是正确的方法。我需要能够编写和读取此日志文件,并将其内容与目录中的当前文件进行比较,以确定哪些文件是新的或更新的。这似乎有点太复杂,需要我添加相当多的编程(可能是groovy脚本或覆盖一些方法)。

在Mule上还有其他更简单的方法吗?如果没有,我该如何开始解决这个问题?我猜我可以写一些java与File EndPoint交谈。

1 个答案:

答案 0 :(得分:1)

正如Victor Romero指出的那样,Idempotent Filter可以解决问题。我尝试了两种类型的幂等滤镜,以查看哪种效果最佳:Idempotent Message FilterIdempotent Secure Hash Message Filter。他们都完成了这项工作,但我最终使用Idempotent Message Filter(无哈希)来记录简单文本文件存储中的时间戳和文件名。

就在文件入站端点之后:

<idempotent-message-filter idExpression="#[message.inboundProperties.originalFilename+'-'+message.inboundProperties.timestamp]" storePrefix="prefix" doc:name="Idempotent Message">
    <simple-text-file-store name="uniqueProcessedMessages" directory="C:\yourDirectory"/>
</idempotent-message-filter>

出于我的流程的目的,只有新的或修改过的文件才能通过。但是,幂等安全散列消息过滤器应该在识别不同文件方面做得更好。