Дерево страниц
Skip to end of metadata
Go to start of metadata

Необходимо доставить JMS-сигнал на запуск агента активным серверам из пула, выделенного для запуска агента. Для режима MANY - всем активным серверам пула, для режима ANY - одному, желательно наименее загруженному.

Для адресации, в JMS-сообщении должны быть заголовки:

  • application - идентификатор целевого приложения
  • target-hosts - имена серверов.
Статус

ГОТОВО

Комментарий

Для запуска группы агентов по-расписанию в режиме ANY, МА отправляет сообщение в JMS-Queue "am-to-any". В заголовке target-hosts перечисляются все сервера пула. Например, target-hosts = "|cm1||cm1.a.ru||cm2.a.ru|".

Для режима MANY сообщение отправляется в JMS-Topic "am-to-many". Заголовок target-hosts тоже перечисляются все сервера пула.

Событием для отправки сообщения на запуск "НЗ по расписанию" является срабатывание триггера в локальном шедулере МА.

События для запуска ASAP-MANY агента:

  • выключении экземпляра КМА,
  • изменении состава серверов в пуле.
  • добавление агента в НЗ.

Запуск ASAP-ANY агентов происходит в рамках процедуры перераспределения обязанности по выполнению ASAP-ANY агентов между активными экземплярами приложений с КМА. Процедура запускается при:

  • выключении/выключении экземпляра КМА,
  • изменении состава серверов в пуле.
  • создании/удалении НЗ.

Для перераспределения МА должен получить все НЗ для ASAP-ANY агентов, ассоциированных с измененным пулом серверов или в котором включился/выключился КМА. Разделить поровну НЗ между оставшимися активными КМА в пуле. Для НЗ, которые в результате перераспределения изменили исполняющее приложениие, отправить сигнал на остановку НЗ через очередь am-to-many, а затем по каждой НЗ ASAP-ANY адресно сигнал на запуск соответствующему назначенному приложению через ту же очередь am-to-many. При перераспределнии можно не учитывать НЗ ASAP-MANY агентов, т.к. они исполняются на всех серверах этого пула.

В ситуации, когда МА стартовал после старта некоторых КМА, в очереди "to-ma" накапливаются сообщения о включении КМА и выключении, наряду с прочими сообщениями. Каждое сообщение доставляются одному из экзепляров МА, но несколько сообщений от одного КМА могут доставиться разным МА. Экземплярам МА необходимо скоординировать работу по перераспределению ASAP-ANY агентов. При старте МА, необходимо обработать все сигналы из очереди "to-ma" через Consumer.recieveNoWait(), обновляя в БД статус активности КМА, но не запуская процедуру перераспределения ASAP-ANY агентов. После исчерпания сообщений в очереди, если хотя бы один КМА в итоге изменил состояние включенности, то запускается процедура перераспределения. При перераспределении, для каждой НЗ требующей включения или выключения на некотором сервере, создается расписание с однократным запуском. Расписание имеет уникальный идентификатор, для которого на уровне РБД наложен constraint уникальности. Если один из МА при создании расписания получает исключение ConstraintViolation, значит данное расписание уже создал другой МА.

Обязательные заголовки JMS-сообщения (message properties)

ЗаголовокПример значенияНазначение
version1.0Версия протокола между МА и КМА
applicationcmjrest/admin-guiИдентификатор приложения, которому адресовано сообщение
JMSTyperun-shcheduled-agentТип сообщения
target-hosts|cm1||cm1.a.ru||cm2.a.ru|Список адресов серверов, где необходимо запустить агент
Ориентировочный формат сообщения.
{
  "runMode": "schedule",
  "agentGroupName": "Ночные",
  "executionId": "123e4567-e89b-12d3-a456-426655440000",
  "agents": [
    {
      "agentType": "JMS",
      "agentId": "StatusRkk",
      "agentName": "Статус РКК",
      "configId": "cmjrest-statusRkk-8",
      "maxExecutionTime": 60,
      "jmsQueueConfig": {
        "queueName": "cm-chlog",
        "queueType": "topic",
        "isDurable": "true",
        "messageSelector": "Zone IN ('MSK', 'SBP')"
      },
      "parameters": {
        "param1": "value1",
        "param2": "value2"
      }
    }
  ]
}


  • Нет меток