@lustin @nixel2007 Большое спасибо за информацию. Посмотрел на указанные вами менеджеры “Менеджер заданий имени Е.Павлюка” и “Очередь заданий”. Принцип работы у них примерно один и тот - же:
- Ставим все задания в очередь
- Задаем общие параметры выполнения заданий из очереди: ограничение на одновременное количество выполняемых задний, и/или общее расписание
- Управляем общей очередью, а не каждым заданием по отдельности
Подскажите пожалуйста, как правильно совместить этот подход со спецификой задач обмена, а именно что для каждой очереди отдельное задание, и оно постоянно выполняется (а перезапускается относительно редко):
- либо оно висит и ждет сообщений
- либо обрабатывает сообщения (но все равно при этом висит)
Т.е. если “тупо” применить указанные вами менеджеры заданий к задачам обмена, то просто запустятся первые попавшиеся n заданий для первых n очередей, а для других либо не запустятся вообще, либо запустятся не скоро (т.к. первые n висят в ожидании получения сообщений и “никогда” не заканчиваются).
Т.е. с помощью указанных менеджеров действительно можно ограничить потребления ресурсов сервером путем ограничения количество одновременно выполняемых регл. заданий, но только “обмен работать не будет”
Кроме того, указанные менеджеры не будут работать в случае если нужно ограничить ресурсы потребляемые заданиям из РАЗНЫХ БАЗ находящихся на одном сервере (см. мой пример в начале)
Т.е. правильно я понимаю, что проблема должна решаться не только использованием менеджеров, а и переделкой архитектуры, скажем:
- Задания по получению сообщений не контролируются менеджером заданий, и висят постоянно (пусть их будет много)
- Логику в этих заданиях максимально упрощаем, т.е. задания по забору сообщений просто забирают текст сообщения и как есть складывают его в регистр (т.е. делаем максимально простую логику не нагружающую процессор)
- Разбор загруженных сообщений делаем с помощью отдельных заданий, контролируемых менеджером заданий (чтобы можно было ограничить ресурсы на эту операцию)
И/ИЛИ
- Есть отдельные задания, которые висят постоянно, не контролируются менеджером заданий и отвечают только за мониторинг сообщений в очередях (сами сообщения не забирают).
- Логика получения сообщений находиться в отдельных заданиях, контролируемых менеджером заданий. Эти задания считают данные порциями, чтобы освободить место следующим (т.е. прочитал 10 штук и все, а следующий экземпляр создается мониторющим заданием
Или может есть уже готовая логика применительно именно к задам обмена с их особенностью (нужно ждать сообщения)?