我在Mule中有两个流程,我希望并行运行。第一个流应该使用sftp将文件从远程计算机传输到本地目录(只要文件在远程目录中不断更新,这就不会停止)。第二个流必须通过调用Pentaho水壶转换/作业(即使文件不断进入也是连续的过程)将更新文件中的数据/插入到数据库中。但是,当我运行我的流程时,它以某种方式通过传递第一个流程并且只尝试执行第二个流程。我怎样才能解决这个问题?这是我的骡子流:
<flow name="flow1">
<sftp:inbound-endpoint
address="sftp://username:password@ip_ddress:22/path"
responseTimeout="1000" />
<echo-component />
<file:outbound-endpoint path="/path/to/OutputFolder"
responseTimeout="10000"/>
</flow>
<flow name="flow2">
<custom-transformer class="org.transformation.kettle.InvokeMain" />
</flow>
答案 0 :(得分:2)
你的第二个流应该有一个file:outbound-endpoint
来获取第一个流程所删除的文件:
<flow name="flow1">
<sftp:inbound-endpoint
address="sftp://username:password@ip_ddress:22/path"
responseTimeout="1000" />
<logger level="INFO"
message="#[message.payloadAs(java.lang.String)]" />
<file:outbound-endpoint path="/path/to/OutputFolder" />
</flow>
<flow name="flow2">
<file:inbound-endpoint path="/path/to/OutputFolder"
fileAge="10000" />
<custom-transformer class="org.transformation.kettle.InvokeMain" />
</flow>
请注意我:
<echo-component />
取代超级旧logger
。我记录了消息有效负载,我认为这是你的意图吗?responseTimeout="10000"
file:outbound-endpoint
fileAge
10秒,以防止拾取仍由SFTP入站端点写入的文件。如果太大或太小,请调整该值。