如何轮询目录以及目录中复制的任何 xlsx 文件是否调用 REST api 来加载提要

How to poll a directory and if the any xlsx file copied in the directory call an REST api to load the feed

我有一个用例,我想轮询一个目录,如果任何 .*xlsx 文件被粘贴到该目录中,我想调用一个 post rest API 来加载数据。 我找不到我的方法,请提出一些方法。

我们有一个系统(几乎)做同样的事情(只是 xml 而不是 xlsx)并且我们使用 Apache Camel https://camel.apache.org/

与 Spring Boot 的集成很好。你只需要定义你的路线 from("file:///<path").to("http:<host>:port/<path>) 它可能会做你需要的。

可能需要调整代码行以进行过滤并可能添加一些转换,但它是一个很好的软件和平。

我相信您正在寻找完全可用的示例,但我怀疑这会是一个示例,因为您的业务任务可能与其他人正在做的不同。

尽管我们不介意您回馈这样的样本:https://github.com/spring-projects/spring-integration-samples

  1. 因此,要构建逻辑,我们需要提供一个 IntegrationFlowhttps://docs.spring.io/spring-integration/docs/current/reference/html/dsl.html#java-dsl.

  2. 要从目录中读取文件,我们需要使用具有相应轮询策略的 Files.inboundAdapter()

  3. 您可以对轮询的文件内容进行一些转换(.transform())。

  4. 通过Http.outboundGateway()

    调用REST服务
  5. 执行 post-process。

像这样:

    @Bean
    public IntegrationFlow fileReadingFlow() {
        return IntegrationFlows
                .from(Files.inboundAdapter(new File("myDir"))
                                .patternFilter("*.xlsx"),
                        e -> e.poller(Pollers.fixedDelay(1000)))
                .transform(...)
                .handle(Http.outboundGateway("")
                        .expectedResponseType(String.class))
                .transform(...)
                .get();
    }

(由于我不知道您的 XSLT 内容是什么以及您如何调用 REST 服务,因此尚未检查是否正常工作。)

这个示例通过读取文件来收集一些想法:https://github.com/spring-projects/spring-integration-samples/tree/main/applications/file-split-ftp