【问题标题】:How to poll last modified file out of multiple files and send to target endpoint in apache camel?如何从多个文件中轮询最后修改的文件并发送到 apache camel 中的目标端点?
【发布时间】:2016-08-18 13:00:07
【问题描述】:

这里我们有 4 个不同时间戳的文件。我们只需要选择最新的文件(使用 Apache camel,时间戳为 18/08/2016 的第一个文件)。

如何实现?我在这个主题上找不到太多资源。

【问题讨论】:

    标签: java file apache-camel last-modified


    【解决方案1】:

    您可以按时间戳对文件进行排序,然后告诉 Camel 只提取 1 个文件。

    sortBy=file:modified&eagerMaxMessagesPerPoll=false&maxMessagesPerPoll=1
    

    您还需要关闭急切的最大消息。在 file2 文档中查看这些选项的更多详细信息:http://camel.apache.org/file2

    如果您使用

    从文件目录中消费
    from("file:...")
    

    然后您还需要考虑在文件处理后如何处理文件,是否应将其删除/保持原样(例如 noop)。例如,如果您删除该文件,那么 Camel 将在下次轮询时仅获取第二个最后修改的文件,依此类推。

    如果您需要删除所有文件,那么恐怕 Camel 没有开箱即用的功能,您可能需要自己编写一些删除所有这些文件的逻辑。

    【讨论】:

      【解决方案2】:

      在文件夹上使用File::lastModified() 并循环进入File::listFiles() 似乎很容易:

      public static void main(String[] args) {
          final String folder = "D:\\Users\\tmp";
          final File file = new File(folder);
      
          long lastModified = Long.MAX_VALUE; 
          for (File f : file.listFiles()) {
              if (f.lastModified() < lastModified) 
                  lastModified = f.lastModified();
          }
      
          SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
          System.out.println("Oldest is " + sdf.format(lastModified));
      }
      

      在我的tmp 文件夹中:

      data.csv     08/08/2016
      data.json    28/07/2016
      index.html   17/06/2016
      map.csv      29/07/2016
      

      输出:

      Oldest is 06/17/2016 09:53:10
      

      【讨论】:

      • 这个解决方案看起来是正确的......我们如何使用 Apache camel 做同样的事情。
      【解决方案3】:

      您可以使用 Camel 中的过滤器来实现 Jordi Castilla 提供的方法。请参阅此处的文档: http://camel.apache.org/file2.html 请参阅使用过滤器部分。

      【讨论】:

        【解决方案4】:

        查看 Camel 的File Language。看起来file:modified 应该能帮到你

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-15
          • 2014-10-27
          • 1970-01-01
          相关资源
          最近更新 更多