Как настроить рабочий процесс с использованием разделения, агрегатирования и одного потока (проблема миграции 3.11) ⇐ JAVA
Как настроить рабочий процесс с использованием разделения, агрегатирования и одного потока (проблема миграции 3.11)
У меня возникли проблемы при переходе на Camel 3.21 с версии 3.2.
Мой рабочий процесс выглядит следующим образом:
прочитайте XML-файл из FS -> проанализируйте его и разделите на части -> агрегируйте эти части на фрагменты определенного размера -> обработайте фрагменты один за другим< /п> Одним из требований является то, что следующий файл не должен быть прочитан, пока предыдущий не будет полностью обработан.
В старой версии Camel все работало хорошо, но в версии 3.21 (думаю, критические изменения были внесены в версии 3.11) следующий файл читается, пока предыдущий еще обрабатывается.
Я обнаружил, что теперь есть два разных потока: один выполняет фактическую агрегацию, а другой обрабатывает агрегированные фрагменты. Это позволяет первому потоку продолжать читать файлы независимо от того, что делает второй поток.
Я пытался следовать инструкциям из документации Camel:
Чтобы добиться синхронного агрегирования, используйте экземпляр SynchronousExecutorService для параметра executorService. Агрегированный вывод будет выполняться в том же потоке, который вызвал агрегатор.
Теперь у меня есть единственный поток, собирающий фрагменты и обрабатывающий их (бинго!), но проблема в том, что он не возвращается к компиляции второго фрагмента после завершения обработки первого. Он просто зависает и ничего не делает.
Я предполагаю, что именно это изменение в версии 3.11 и является причиной проблемы:
Совокупный EIP теперь всегда будет использовать пул рабочих потоков для обработки исходящих сообщений. Раньше рабочий пул создавался только в том случае, если ParallelProcessing=true. Если параметр ParallelProcessing=false, то однопоточный рабочий пул создается и используется агрегатором. Механизм маршрутизации Camels работает лучше, когда выделенный рабочий пул устраняет взлом, который в противном случае был бы необходим в других EIP, которые были затронуты при использовании агрегатора в некоторых специальных конфигурациях.
Любые идеи о том, как решить эту проблему, приветствуются!
У меня возникли проблемы при переходе на Camel 3.21 с версии 3.2.
Мой рабочий процесс выглядит следующим образом:
прочитайте XML-файл из FS -> проанализируйте его и разделите на части -> агрегируйте эти части на фрагменты определенного размера -> обработайте фрагменты один за другим< /п> Одним из требований является то, что следующий файл не должен быть прочитан, пока предыдущий не будет полностью обработан.
В старой версии Camel все работало хорошо, но в версии 3.21 (думаю, критические изменения были внесены в версии 3.11) следующий файл читается, пока предыдущий еще обрабатывается.
Я обнаружил, что теперь есть два разных потока: один выполняет фактическую агрегацию, а другой обрабатывает агрегированные фрагменты. Это позволяет первому потоку продолжать читать файлы независимо от того, что делает второй поток.
Я пытался следовать инструкциям из документации Camel:
Чтобы добиться синхронного агрегирования, используйте экземпляр SynchronousExecutorService для параметра executorService. Агрегированный вывод будет выполняться в том же потоке, который вызвал агрегатор.
Теперь у меня есть единственный поток, собирающий фрагменты и обрабатывающий их (бинго!), но проблема в том, что он не возвращается к компиляции второго фрагмента после завершения обработки первого. Он просто зависает и ничего не делает.
Я предполагаю, что именно это изменение в версии 3.11 и является причиной проблемы:
Совокупный EIP теперь всегда будет использовать пул рабочих потоков для обработки исходящих сообщений. Раньше рабочий пул создавался только в том случае, если ParallelProcessing=true. Если параметр ParallelProcessing=false, то однопоточный рабочий пул создается и используется агрегатором. Механизм маршрутизации Camels работает лучше, когда выделенный рабочий пул устраняет взлом, который в противном случае был бы необходим в других EIP, которые были затронуты при использовании агрегатора в некоторых специальных конфигурациях.
Любые идеи о том, как решить эту проблему, приветствуются!
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение