Как я узнаю, что у маршрута Apache Camel больше нет файлов для копирования

1

Я пишу простое приложение командной строки, которое копирует файлы с ftp-сервера на локальный диск. Предположим, что я использую следующее определение маршрута:

    File tmpFile = File.createTempFile("repo", "dat");
    IdempotentRepository<String> repository = FileIdempotentRepository.fileIdempotentRepository(tmpFile);
    from("{{ftp.server}}") 
        .idempotentConsumer(header("CamelFileName"), repository)
        .to("file:target/download")
        .log("Downloaded file ${file:name} complete.");

где ftp.server - это что-то вроде:

ftp://ftp-server.com:21/mypath?username=foo&password=bar&delay=5

Предположим, что файлы на ftp-сервере со временем не изменятся. Как проверить, завершилось ли копирование или еще есть файл для копирования? Мне нужно это, потому что я хочу закончить свое приложение, как только весь файл будет скопирован.

Теги:
apache-camel

2 ответа

1

Читайте о пакетном потребителе

Пользователь ftp установит некоторые свойства обмена с количеством файлов, и если его последний файл и т.д.

0

У вас есть какой-либо контроль над концом, который публикует файлы FTP? Например, это ваш сервер и ваш клиент или вы можете сделать запрос в качестве клиента?

Если это так, вы можете попросить добавить файл флага в конце их пакетного процесса. Это однобайтовый файл с согласованным именем, за которым вы смотрите - когда этот файл появляется, вы знаете, что пакет завершен.

Это полезный метод, если вы регулярно удаляете огромные файлы, и им требуется много времени, чтобы пакетный процесс копировал на диск на сервере. Например, файл создается некоторым потоковым процессом.

  • 0
    К сожалению, я не могу контролировать файл FTP. Они предоставляются третьей стороной.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню