Жизненный цикл событий

Эта статья описывает жизненный цикл события сервера. События, сгенерированные в Agent и AggreGate Client, имеют более простые жизненные циклы с меньшим количеством этапов.

  • Некоторые компоненты системы хотят запустить событие во время работы. Например, компонент, ответственный за коммуникацию с определенным Device (который называется драйвером Device) генерирует событие info в контексте этого Device, когда с ним теряется связь.

  • Проверяются права доступа генератора событий. Если эти права доступа не позволяют сгенерировать событие этого типа в данном конкретном контексте, генерация события прекращается.

  • Если определяется выражение префильтра, оно оценивается. Если оно возвращается со значением false, генерация события не происходит.

  • Если определяется выражением идентификатора дедупликации, оно оценивается. Затем система пытается найти другое событие с тем же идентификатором дедупликации, и если оно находится, текущее событие опускается, но счетчик событий предыдущего увеличивается.

  • Событие обогащается дополнительными данными, определенными пользователем.

  • Если событие определяется как постоянное, оно сохраняется в истории событий. Вы не можете сделать событие постоянным, если оно уже не определено подобным образом (большинство событий постоянные). Однако вы можете поменять "время жизни" события (его срок действия). Это делается путем изменения таблицы времен истечения события в глобальной конфигурации AggreGate Server (см. раздел история событий).

  • Каждый зарегистрированный слушатель получает уведомление.

Диспетчеризация события

Последний шаг жизненного цикла событий - это диспетчеризация. На этой стадии каждый подписчик обрабатывает экземпляры события.

Пока все другие стадии обработки события появляются в потоке, который сгенерировал событие, диспетчеризация события работает в отдельном потоке, который называется диспетчер события. Исходный поток только добавляет событие в очередь события диспетчера.

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

Если у сервера плохая работа, важно оценить длину очереди диспетчера события. Длина изначальной очереди события AggreGate Server's показывается в поле длина очереди события таблицы статус сервера.