1

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

1 回答 1

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
  • 在入站文件端点上设置fileAge10 秒,以防止拾取仍由 SFTP 入站端点写入的文件。如果太大或太小,请调整值。
于 2013-04-18T16:56:53.703 回答