2013-04-18 77 views
1

我有两个骡子流,我想并行运行。第一个流程应该使用sftp将文件从远程计算机传输到本地目录(只要该文件在远程目录中不断更新,是否会停止)。第二个流程必须通过调用Pentaho水壶转换/作业(只要文件继续进入,也是连续的过程),将文件中的数据更新/插入到数据库中。但是,当我运行我的流程时,它以某种方式通过传递第一个流程并仅尝试执行第二个流程。我怎样才能解决这个问题?这里是我的骡子流量:骡子并行运行流程

<flow name="flow1"> 
    <sftp:inbound-endpoint 
    address="sftp://username:[email protected]_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> 

回答

2

你的第二个流应该有一个file:outbound-endpoint拿起第一流量下降的文件:

<flow name="flow1"> 
    <sftp:inbound-endpoint 
     address="sftp://username:[email protected]_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> 

注意到我:

  • 用更现代的logger取代超旧<echo-component />。我记录了消息有效载荷,我认为这是您的意图?
  • file:outbound-endpoint丢弃无用responseTimeout="10000"
  • 入站文件端点设置fileAge 10的秒,以防止拿起这仍然是由SFTP入站端点的书面文件。调整值如果太大或太小。
+0

那么,这是否适合你? – 2013-04-19 16:17:51

+0

是的。这对我有效。感谢一群戴夫。 – 2013-04-20 07:43:45

+0

很酷,你介意接受我的回答吗?这是它在StackOverflow上的工作方式:) – 2013-04-22 15:55:47