Получение текущих активных / запущенных экземпляров WF - PullRequest
0 голосов
/ 05 марта 2019

Мы столкнулись с проблемой, которая заставляет WF (Windows Workflow Foundation) блокировать создание новых рабочих процессов, когда в данный момент запущено слишком много рабочих процессов. Наша установка состоит из 3 сервисов

  1. EventService - получает события, для которых мы создаем рабочие процессы, для обработки
  2. WorkflowService - получает запросы от EventService с указанием создать новый рабочий процесс
  3. WorkflowProcessor - обрабатывает отдельные этапы рабочего процесса. WorkflowService использует привязки служб для выполнения каждого шага / действия через WorkflowProcessor

Если мы ограничим WorkflowProcessor и WorkflowService для одновременной обработки только 100 рабочих процессов (настройка конфигурации удвоения WCF ServiceThrottlingBehavior.MaxConcurrentInstances = 100), то EventService блокируется при достижении этого предела. То есть если WorkflowProcessor в настоящее время обрабатывает 100 рабочих процессов, WorkflowService не будет отвечать на EventService, пока некоторые рабочие процессы не закончили обработку.

Из того, что мы собрали, очевидно, что WF не предназначен для регулирования рабочих процессов в реальном времени, т. Е. Мне кажется, что он предназначен для создания пакетов, а не для постоянного приема новых рабочих процессов. Я посмотрел на сообщения типа this , которые, кажется, ожидают запуска рабочих процессов в пакетном режиме, и это не работает для нас. Поэтому наша идея состоит в том, чтобы вставить ручное регулирование между каждым действием, проверив, достигло ли текущее число запущенных экземпляров ограничение, и затем выгрузить рабочий процесс в течение определенного периода времени.

Итак, вопрос в следующем: (как) возможно ли получить текущее количество запущенных рабочих процессов (какое бы число не значило ServiceThrottlingBehavior.MaxConcurrentInstances)? Оптимально из такой деятельности, как CodeActivity .

В качестве альтернативы, если некоторые из вас знают, как правильно управлять дросселированием в нашем контексте (возможно, WF действительно поддерживает это), я буду рад получить и некоторые сведения об этом.

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