我是Mule ESB的新手。我的要求是每隔15分钟间隔将特定文件(基于模式)从一个目录位置移动到另一个目录位置。我已经使用该工具并找到了一个poll节点,该节点很可能在给定的时间间隔内被触发。
有人可以提供详细步骤和线图来实现这一目标。这对我很有帮助。如果您需要我的任何细节,请告诉我。
提前致谢!
干杯!
答案 0 :(得分:0)
您需要指定文件连接器和文件端点(see file transport doc)
基本上就是
e.g。
<file:connector name="readFileConnector" autoDelete="true" pollingFrequency="6000" fileAge="30000" streaming="false" />
<file:endpoint name="readFileEndpoint" connector-ref="readFileConnector" path="${transaction.in}" moveToDirectory="${transaction.backup}" moveToPattern="#[function:datestamp]-#[header:originalFilename]"/>
<flow name="readAndLog">
<inbound-endpoint ref="readFileEndpoint"/>
//possible processing if any
<vm:outbound-endpoint ref="vmFileIn"/>
</flow>
一些关键点:
autodelete - 删除或不复制文件。
pollingFrequency - 检查目录中要复制的文件的频率
路径 - 从哪里读取文件
moveToDirectory - 把它们放在哪里
答案 1 :(得分:0)
我建议使用石英连接器要灵活得多。以下是您可以使用的示例。
Conectors
<file:connector name="in" autoDelete="true" streaming="true" validateConnections="true" doc:name="File"/>
<file:connector name="out" autoDelete="true" streaming="true" validateConnections="true" doc:name="File"/>
流
<flow name="stackoverflowFlow1" doc:name="stackoverflowFlow1">
<quartz:inbound-endpoint responseTimeout="10000" doc:name="Quartz" jobName="test" repeatInterval="120000">
<quartz:event-generator-job/>
</quartz:inbound-endpoint>
<flow-ref name="stackoverflowFlow3" doc:name="Flow Reference"/>
</flow>
<flow name="stackoverflowFlow3" doc:name="stackoverflowFlow3">
<file:inbound-endpoint path="C:/stackoverflow/q-001/fuente" connector-ref="in" doc:name="File">
<file:filename-wildcard-filter pattern="*.txt" />
</file:inbound-endpoint>
<logger message="listo" level="INFO" doc:name="Logger"/>
<file:outbound-endpoint connector-ref="out" path="C:/stackoverflow/q-001/destino" doc:name="File"/>
</flow>
答案 2 :(得分:0)
您可以使用文件连接器旁边的石英连接器作为特定模式,您可以使用文件连接器中提供的正则表达式过滤器。或者您可以将文件连接器包装在轮询范围内,并根据您的时间间隔要求修复固定频率调度程序或cron作业。