在Mule Parallel中运行流程

时间:2013-04-18 03:43:48

标签: parallel-processing mule kettle

我在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> 

1 个答案:

答案 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入站端点写入的文件。如果太大或太小,请调整该值。