Как настроить поток для отправки на несколько POD в K8S?

У меня есть одно задание camunda, которое настроено как многоэкземплярный вызов другого процесса. В настоящее время проверяются многоэкземплярные асинхронные до, многоэкземплярные асинхронные после и многоэкземплярные эксклюзивные. У нас развернуто несколько POD для обработки вызовов (1k за раз), и прямо сейчас, когда я пытаюсь запустить это, кажется, что независимо от того, что я делаю, они выполняются последовательно или близко к этому. Что нужно, чтобы отправить все 1000 элементов нескольким экземплярам дочернего процесса?

Попытался настроить асинхронные настройки нескольких экземпляров.

Многоэкземплярный цикл Cardinality-blank Collection-builtJobList Element Variable-builtRequestObject

Затем я проверяю все три мультиэкземплярных значения. Асинхронные продолжения не проверяются.


person iscariot TF    schedule 14.05.2019    source источник


Ответы (1)


Camunda BPM по умолчанию запускает только один поток (выполнение) внутри данного экземпляра процесса за раз. Вы можете изменить это поведение для данной задачи/действия, установив флажки «Асинхронно до» и/или «Асинхронно после» — таким образом выбрав использование исполнителя заданий — и сняв флажок «Эксклюзив». (Это также относится к аналогичным флажкам для действий с несколькими экземплярами.) Если вы сделаете это, помните, что поведение может быть не таким, как вы хотите; конкретно:

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

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

person Ryan Johnston    schedule 16.05.2019