Проблемы многоадресной рассылки файлов в Apache Camel - PullRequest
0 голосов
/ 30 октября 2018

ребята.

Мне нужно обработать 10 файлов параллельно, используя Apache Camel, и затем отправить их через команду FTP. Я провел небольшое исследование и узнал о команде multicast (). Но, видимо, это не работает, потому что я получаю файлы один за другим на сервере ...: /

Мой маршрут файла:

 fromF("file://%s?antInclude=**/*.sync&recursive=true&noop=true", configurationManager.getDestinationFilesFolderPath())
        .routeId("FTP_Snapshot_Fetcher")
        .setHeader("OriginalFileName", simple("${file:name.noext}"))
        .multicast()
        .parallelProcessing()
            .to(ftpRoutesForSameGroup.split(separator))
            .toD("file://" + configurationManager.getDestinationFilesFolderPath() + "?fileName=${in.header.OriginalFileName}" + DAConfigurations.FILE_EXTENSION);

Я пытался использовать его с pipe и to, но оба варианта не имеют никакого эффекта.

Есть ли вероятность утечки компонента sftp?

Похоже:

.toD("sftp://"
                + ftpEndpoint.getUser() + "@"
                + ftpEndpoint.getUrl()  + ":"
                + ftpEndpoint.getPort() + "/ftp/${in.header.pathToFile}"
                + "?password=" + ftpEndpoint.getPassword()
                + "&autoCreate=true&passiveMode=true&binary=true&tempFileName=${file:name.noext}"
                + DAConfigurations.FILE_EXTENSION_ON_SYNC
            )

ftpRoutesForSameGroup - это строка, содержащая весь список маршрутов (например, "direct: r1; direct: r2; direct: r3").

Кто-нибудь знает, как исправить это правильно (отправить все файлы или максимально возможное параллельно)?

1 Ответ

0 голосов
/ 02 ноября 2018

Согласно документации Camel:

Multicast позволяет направлять одно и то же сообщение на несколько конечных точек и обрабатывать их другим способом.

Итак, что происходит, содержимое файла передается четырем маршрутам, и все они обрабатывают одно и то же содержимое и делают одно и то же.

По вашему требованию попробуйте использовать компонент SEDA, который разветвляет новый поток для дальнейшей обработки.

СЕДА КОМПОНЕНТ

...