Окунаться в Java из .NET на долгое время.
Я ищу пример того, как периодически загружать файл, читать из него текст, а затем предпринимать некоторые действия на основе чтения с использованием библиотеки интеграции Springs и подхода, основанного на аннотациях.
Я хочу получить zip-файл в формате GTFS от транзитного провайдера.Этот провайдер создает простой текстовый файл с отметкой времени, указывающей время последней публикации.
В частности, производители данных публикуют текстовый файл по адресу:
https://someserver.com/gfts/published.txt
Этот файл имеет простую временную метку, указывающую, когда в последний раз был опубликован их файл данных.
Затем есть данные:
https://someserver.com/gfts/schedule.zip
Я попытался найти несколько примеров того, как выполнить опрос "опубликованного" файла.В основном я хочу периодически загружать файл и проверять временную метку, чтобы определить, следует ли загружать расписание.
Большинство примеров, которые я видел, используют конфигурацию на основе XML с пружиной - и я едва держусь на основе аннотаций.Я также видел примеры загрузки файла с использованием FTP / SFTP.
Мне нужно использовать http AND Мне также нужно включить Basic Authorization (в заголовке).
Это все, что я получил.Я не уверен, как это сделать?
Из документов 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;
}
}