如何轮询目录以及目录中复制的任何 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。
因此,要构建逻辑,我们需要提供一个 IntegrationFlow
:https://docs.spring.io/spring-integration/docs/current/reference/html/dsl.html#java-dsl.
要从目录中读取文件,我们需要使用具有相应轮询策略的 Files.inboundAdapter()
。
您可以对轮询的文件内容进行一些转换(.transform()
)。
通过Http.outboundGateway()
调用REST服务
执行 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
我有一个用例,我想轮询一个目录,如果任何 .*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。
因此,要构建逻辑,我们需要提供一个
IntegrationFlow
:https://docs.spring.io/spring-integration/docs/current/reference/html/dsl.html#java-dsl.要从目录中读取文件,我们需要使用具有相应轮询策略的
Files.inboundAdapter()
。您可以对轮询的文件内容进行一些转换(
.transform()
)。通过
调用REST服务Http.outboundGateway()
执行 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