Как обогатить сообщение в File Route от SFTP до JMS в кластерной среде, используя Apache Camel? - PullRequest
0 голосов
/ 24 октября 2019

Мы собираемся прочитать файл из SFTP и поместить сотрудников в базу данных.

Ниже приводится структура XML

 <employees>
     <employee></employee>
     <employee></employee>
     <employee></employee>
 <employees>    

Стратегия, которую я считаю следующей:

  1. Выбор файла XML из SFTP ->
  2. Выбор сотрудника Нетиз XML -> (24000 сотрудников)
  3. Извлечение данных из «Системы 1 и 2» на основе номера сотрудника. в XML-файле все вместе в памяти ->
  4. Разделить сотрудника из XML ->
  5. Назначить данные из «Системы 1 и Системы 2» каждому сотруднику Exchange ->
  6. ПоместитьXML каждого сотрудника в очередь JMS (чтение в кластерном окружении)

Есть ли какая-либо другая лучшая стратегия для обработки этого сценария в Apache Camel по маршруту abve или маршруту 2 (очередь Jms)?

Примечание: как это кластерная среда;мы не можем получать данные из System1 и System2 на самих серверах, тогда нам нужно отслеживать, назначая идентификатор пакета для одного файла. Вы можете думать об этом сценарии и в других интеграциях

1 Ответ

1 голос
/ 24 октября 2019

Вышеуказанные шаги могут быть улучшены на

  1. Ускорьте ваш процесс после шага 4 путем параллельной обработки (например, используйте пул потоков)
  2. Укрепите процесс SFTP, освободив основной поток после шага 3(например, используйте wireTap)
    • Чтобы предотвратить потерю данных, сохраните обмен на другое постоянное хранилище (например, очередь JMS)
    • Использование памяти приложением увеличится

Если шаг 3 (выборка данных из «Системы 1 и Системы 2») может выполняться одновременно, запуск нескольких экземпляров приложения с идемпотентом (использование внешнего кэша или БД) может помочь для большого количества файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...