Camel smb: // - потребляет много файлов из одной папки - PullRequest
1 голос
/ 18 апреля 2019

Я пытаюсь загрузить большое количество файлов с конечной точки smb://, и я хотел бы, чтобы потребление файлов было как можно более быстрым - это означает, что я хотел бы загрузить и обработать как можно больше файлов, например опрос для 2000 файлов вместо значения по умолчанию в Camel. Чтобы добиться этого, я искал способ увеличить размер входящего пакета или добавить многопоточное / параллельное потребление для одной папки.

До сих пор я пробовал следующее, но заметил, что скорость загрузки осталась такой же, как и в одном потоке:

from("smb:\\someFolder?&maxMessagesPerPoll=1000")...

from("smb:\\someFolder?&maxMessagesPerPoll=-1")...

from("smb:\\someFolder").threads(20)...

Даже с параметром threads, несмотря на то, что идентификаторы потоков различаются, скорость загрузки была одинаковой. Я полагаю, что Camel просто создает пул потоков, чтобы каждый раз каждый поток принимал другой поток, но количество опроса одинаково.

Я также посмотрел флаг concurrentConsumers, но из того, что я понял, он не поддерживается для файлов, скорее для ActiveMQ.

Единственное исправление эффективности, которое мне удалось применить, потребляло от нескольких smb:// конечных точек. Пропускная способность быстро возросла, когда я это сделал. Мне интересно, есть ли способ достичь того же результата, что и для нескольких папок, но с использованием только одной папки?

1 Ответ

0 голосов
/ 23 апреля 2019

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

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

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

Обратите внимание на параметр shuffle, если вы используете одновременно работающих потребителей. Это перетасовывает список файлов для случайной обработки и, следовательно, уменьшает вероятность того, что несколько потребителей пытаются использовать один и тот же файл одновременно.

...