我正在使用Mule 3.2,我正在将文件从一个位置移动到另一个位置。错误/问题是Mule不断反复处理相同的文件而不删除它们。
控制台显示:
org.mule.transport.file.FileMessageReceiver: Lock obtained on file:
我的配置文件如下:
<flow name="File-FTP-Bridge">
<file:inbound-endpoint path="${outbound.input.path}"
moveToDirectory="${outbound.input.backup.path}">
<file:filename-wildcard-filter
pattern="*.msg" />
</file:inbound-endpoint>
<ftp:outbound-endpoint user="${outbound.ftp.user}"
password="${outbound.ftp.password}" host="${outbound.ftp.host}"
path="${outbound.ftp.path}" port="${outbound.ftp.port}"
outputPattern="#[header:originalFilename]">
</ftp:outbound-endpoint>
</flow>
我找不到这个问题的根本原因。提前谢谢。
答案 0 :(得分:3)
您的文件端点错过了 pollingFrequency 属性,这意味着它使用的默认值为1000毫秒。这使得Mule轮询文件比FTP端点可以处理它们更快。试试例如:
pollingFrequency="10000"
如果这不够好,因为FTP上传具有不可预测的性能(因此Mule仍会重试正在上传的文件),那么如果您的文件足够小以适应内存,请尝试添加:
<object-to-byte-array-transformer />
在入站和出站端点之间。这会将文件加载到内存中,并在尝试FTP上载之前立即将其移至outbound.input.backup.path。当然,如果FTP上传失败,你必须将文件移回outbound.input.path ......