Параллельная обработка нескольких файлов с использованием Apache Camel - PullRequest
0 голосов
/ 19 марта 2019

У меня есть тысячи файлов для обработки каждого в отдельности.Я использовал Apache Camel для обработки файлов

из ("file: C: \ datafiles \ input? ReadLock = updated & readLockTimeout = 100 & readLockCheckInterval = 20") .process (new MyProcessor ()). To ("file: C: \ datafiles \ output ");

Я делаю каждый файл по одному, и это занимает 30 минут.

Я думаю, что я могу сделать эту обработку в 10 потоков одновременно, 10 файловза один раз, и я мог бы сделать это за 3 минуты вместо 30.

Мой вопрос: каков «правильный» способ достижения моих 10 потоков?И когда вы закончите, создайте новый с максимальным числом 10.

Когда я искал в интернете, у меня появились некоторые предложения, такие как

  1. maxMesssagesPerPoll
  2. threads (10)
  3. Агрегаторы

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

1 Ответ

0 голосов
/ 29 марта 2019

Можно использовать приведенный ниже код для достижения многопоточности.

открытый класс RouterConfig расширяет RouteBuilder { public void configure () выдает Exception { из ( "файла: C: \ файлы данных \ вход = изменен блокировкой чтения и readLockTimeout = 100 & readLockCheckInterval = 20 & maxMessagesPerPoll = 3") .threads (3, 3, "myThread") .process (новый MyProcessor ()) .то ( "Файл: C: \ файлы данных \ выход"); } }

Здесь темы API создаст 3 темы. maxMessagesPerPoll = 3 выберет 3 файла в одном опросе и передаст один файл одному потоку, как и здесь, он выбирает 3 файла (файл1, файл2, файл3) и дает одному файлу 3 потока (поток1, поток2, поток3).

  • так, "file1" будет обработан "thread1" и
  • "file2" будет обработан "thread2"
  • "file3" будет обработан "thread3"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...