从 .NET 开始涉足 Java 已经很长时间了。
我正在寻找有关如何定期下载文件、从中读取文本然后使用 Springs 集成库和基于注释的方法根据读取采取一些行动的示例。
我想从运输提供商那里提取 GTFS 格式的 zip 文件。此提供程序会生成一个简单的文本文件,其中包含一个时间戳来指示上次发布时间。
具体来说,数据的生产者在以下位置发布了一个文本文件:
https://someserver.com/gfts/published.txt
这个文件有一个简单的时间戳来指示他们的数据文件最后一次发布的时间。
然后是数据:
https://someserver.com/gfts/schedule.zip
我试图找到一些关于如何轮询“已发布”文件的示例。基本上我想定期下载文件并检查时间戳以确定是否应该下载时间表。
我见过的大多数示例都是使用基于 XML 的配置和 spring - 我几乎没有坚持基于注释。我还看到了使用 FTP / SFTP 下载文件的示例。
我需要使用 http 并且还需要包含基本授权(在标题中)。
这是我所得到的。我不确定如何接线?
来自 Spring Integration 文档 - 这就是我应该如何声明出站网关(我认为这就是我需要的?)
现在的问题是什么?我需要 HttpRequestExecutingMessageHandler 将流(文件)保存为本地文件,以便我可以读取内容并采取其他措施?
@Configuration
@EnableIntegration
public class GtfsConfiguration {
@Bean
public MessageChannel fileUpdateChannel () {
return new DirectChannel();
}
@Bean
@ServiceActivator(inputChannel = "fileUpdateChannel", polling = @Poller(fixedDelay="5000")
public HttpRequestExecutingMessageHandler fileUpdateGateway() {
HttpRequestExecutingMessageHandler handler = new HttpRequestExecutingMessageHandler("https://someserver.com/gtfs/raw/published.txt");
handler.setHttpMethod(HttpMethod.GET);
handler.setExpectedResponseType(byte[].class);
return handler;
}
}