【问题标题】:Running Flows in Mule Parallel在 Mule 中并行运行流程
【发布时间】:2013-04-18 03:43:47
【问题描述】:

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

【问题讨论】:

    标签: parallel-processing mule kettle


    【解决方案1】:

    您的第二个流程应该有一个 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>
    

    请注意,我已经:

    • 用更现代的logger 替换了超级旧的&lt;echo-component /&gt;。我记录了消息负载,我认为这是您的意图?
    • file:outbound-endpoint中删除了无用的responseTimeout="10000"
    • 在入站文件端点上设置 10 秒的 fileAge,以防止拾取仍由 SFTP 入站端点写入的文件。如果值太大或太小,请调整值。

    【讨论】:

    • 酷,那你介意接受我的回答吗?这就是它在 StackOverflow 上的工作方式 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多