【问题标题】:How to process when all the files completes and place done in camel当所有文件完成并在骆驼中完成时如何处理
【发布时间】:2015-07-22 21:35:36
【问题描述】:

我是骆驼的新手。让我解释一下我的业务需求,我在 文件夹 A 中有大约 10 个文件。特别是,所有这 10 个文件都将被处理并执行业务逻辑并将文件移动到 文件夹 B。每个文件分别放置一个完成的文件。我需要处理 文件夹 B 中的文件以进行下一次业务操作。但是只有在放置了所有 10 个完成的文件后,我才需要开始这个过程。在完成我之前流程中的所有 10 个文件之前,我不应该开始这个流程。如何在骆驼中做到这一点。

注意: 我不想为我的第二条路线使用任何 cron。 10个文件是假设。它可能是动态的

提前致谢

【问题讨论】:

    标签: cron apache-camel


    【解决方案1】:

    在继续第二部分处理之前,您可以Aggregator 聚合已处理的文件。

    你会得到类似下面的东西:

    <route>
      <from uri="file://<Folder A>" />
    
      <!-- your business logic -->
    
      <aggregate strategyRef="aggregatorStrategy" ...>
        ...
      </aggregate>
    
      <!-- here goes the business logic used to poll files from Folder B -->
    
    </route>
    

    【讨论】:

      【解决方案2】:

      也许您可以使用“alldone”文件:

      <route>
        <from uri="file://<Folder A>?scheduler=<particular time>" />
        <!-- your business logic part 1-->
        <to uri="file://<Folder B>" />
        <choice>
          <when>
            <simple>${exchangeProperty.CamelBatchComplete}</simple>
            <setBody><constant>null</constant></setBody>
            <setHeader headerName="CamelFileName">
              <simple>alldone</simple>
            </setHeader>
            <to uri="file://<Folder B>" />
          </when>
        <choice>
      </route>
      
      <route>
        <from uri="file://<Folder B>?doneFileName=alldone" />
        <!-- your business logic part 2-->
      </route>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-11
        • 2021-06-09
        • 2014-01-12
        • 1970-01-01
        相关资源
        最近更新 更多