Server Queue Message Broker (sq)

Описание

Брокер сообщений о событиях в системе.
Обеспечивает прием и сохранение данных (до превышения лимита) без нарушения порядка поступления. Предоставляет доступ к хранилищу событий только указанным в конфигурации подписчикам (функциональным ролям-обработчикам, например cdr).

Временно и ограниченно хранит данные о событиях, сгенерированных на текущем сайте.
Резервируется в режиме Active-Passive. Масштабируется разделением по очередям.

Table 1. Системные характеристики

Код

sq

Режим работы

Сервис, хранилище

Режим резервирования

Active-Active

Типы сайтов

Любые

Слой

Бизнес-логика

Размещение

Внутренний

Сохранение и восстановление состояния при перезагрузке

Да

Приложение

rostell_sq

Собственное хранилище

ODB Mnesia

Параметры

Table 2. Параметры
Имя Тип Умолчание Описание

name

str

required

Имя. Может состоять из латинских букв и цифр, должно начинаться с буквы.

roletype

str

required

Тип функциональной роли. Возможные значения: "sq".

iface

str

required

Алиас сетевого интерфейса сервера, на котором будет происходить внутреннее взаимодействие функциональных ролей между собой.

group

int

required

Номер группы.
В рамках горизонтального масштабирования функциональная роль может быть разделена на несколько групп на сайте, в каждой из которых активен только один экземпляр, остальные зарезервированы.
Ответственность между группами разделяется по типам очередям (или классам событий).
Целое число от 1 до 9999999.

order

int

required

Порядок экземпляра функциональной роли в рамках группы.
Определяет в каком порядке будет происходить перетекание в режиме Active-Passive.

domainqlist

array<object>

empty

Список доменных очередей в рамках экземпляра функциональной роли, для каждой очереди указывается список паттернов которые она принимает и максимальная длина очереди в количестве блоков по 100к. Возможные паттерны:

Формат описателя очереди
{"key": "queueNum", "patterns":"p1,...,pN"}

qlist

array<object>

empty

Список очередей в рамках экземпляра функциональной роли, для каждой очереди указывается список паттернов которые она принимает и максимальная длина очереди в количестве блоков по 100к

Формат описателя очереди
{"key": "queueNum","patterns":"p1,...,pN"}

Список паттернов для `qlist`

Table 3. Список паттернов для `qlist`
Значение Описание

callevents

События системы в рамках звонка

confevents

События системы в рамках конференции

mixerevents

События системы в рамках микширования

perfmonevents

События системы мониторинга

Список паттернов для `domainqlist`

Table 4. Список паттернов для `domainqlist`
Значение Описание

chatevents

События системы в рамках чат-сессии.

userevents

События по пользователям системы.

Пример конфигурации

Управление конфигурацией производится в приложении, доступном для администраторов мастер-домена. Приложение скрывает полное содержание конфигурации, однако тем не менее оно доступно через API.

Конфигурация содержит раздел для описания всех экземпляров всех функциональных ролей. Параметры определяются для каждого конкретного экземпляра функциональной роли.

Пример узла
{
  "name": "sq1",
  "roletype": "sq",
  "iface": "eth0",

  "group": 5,
  "order": 1,

  "domainqlist": [
    {
      "key": "q4",
      "patterns": "alertcallevents,chatevents,dcevents,ivrhuntqevents,providerevents,scriptevents,selectorevents,sipuserevents,userevents"
    }
  ],
  "qlist": [
    {
      "key": "q3",
      "patterns": "mixerevents"
    },
    {
      "key": "q1",
      "patterns": "callevents,confevents"
    }
  ]
}

См. также