Хранилище сообщений

Сервис предназначен для регистрации и хранения сообщений Платформы с возможностью извлечения сообщений для повторной обработки в Платформе. В кластере может быть создан только один сервис с типом Хранилище сообщений.

Внимание

Особенности работы с версии 3.1.0

Основной способ хранения данных Хранилища сообщений - DatareonDB. Поддержка работы Хранилища сообщений с СУБД MSSQL и PosgreSQL сохраняется. Вкладка Параметры с полями настроек подключения к СУБД убрана со страницы Хранилища сообщений в ЦН, изменение настроек подключения к СУБД возможно в режиме редактирования конфигурации на странице Хранилища сообщений в ЦН.

Внимание

Особенности работы с версии 3.1.1.0

При работе с СУБД PosgreSQL сервис подключается по имени базы данных в регистре, указанном в настройках. По умолчанию подключение производится по имени базы данных в нижнем регистре. Если сервис подключен к базе данных, имя которой содержит символы верхнего регистра, рекомендуется выключить сервис, переименовать базу данных и включить сервис снова.

Внимание

Особенности работы с версии 3.1.1.0

Удаление записей из базы данных DatareonDB является виртуальным: физического удаления данных не осуществляется, но устанавливается метка о статусе сообщения (удалено или не удалено).

Внимание

Если Хранилище сообщений создано в версии 3.1.0, оно будет хранить данные в DatareonDB. Если Хранилище сообщений хранит данные в СУБД (например, если Хранилище сообщений создавалось в предыдущих версиях Платформы), после обновления Платформы на версию 3.1.0 возможно переключение на хранение данных в DatareonDB. Во время переключения перенос записей Хранилища сообщений возможен при помощи специальной утилиты-конвертера. Если не произвести перенос, при переходе на DatareonDB Платформа создаст пустую базу данных. Чтобы переключить Хранилище сообщений на использование DatareonDB, на странице Хранилища сообщений в ЦН в режиме редактирования конфигурации установите true в значении ключа internalStorage, сохраните изменения и примените конфигурацию. Архив с утилитой и руководством по использованию доступен на портале скачивания.

Внимание

Особенности работы с версии 3.1.0

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

Внимание

Особенности работы с версии 3.1.0

Хранилище сообщений, работающее с DatareonDB в кластере, содержащем больше одного сервера, при отказе сервера, к которому привязано Хранилище сообщений, необходимо привязать к рабочему серверу (предпочтительный вариант, так как привязка будет активирована при любом применении конфигурации), либо использовать кнопку Перенести на другой сервер на странице сервера в ЦМ.

Внимание

Особенности работы с версии 3.1.0

Содержимое Хранилища сообщений, работающего с DatareonDB в кластере, содержащем больше одного сервера, при запуске процесса Хранилища сообщений на одном сервере кластера и последующей привязке к другому серверу, не переносится автоматически. Возможно ручное перемещение файлов DatareonDB Хранилища сообщений на другой сервер. Для этого требуется остановить Хранилище сообщений, перенести каталог с данными, при необходимости настроить права на каталог и содержимое для пользователя, под которым запущена Платформа, и запустить Хранилище сообщений.

Пути к файлам DatareonDB Хранилища сообщений:

Windows:

путь_к_каталогу_с_данными_Платформы\Platform\Data\DatareonPlatformMessageStorage\идентификатор_Хранилища\DatareonStorage\MessageStorage

Linux:

путь_к_каталогу_с_данными_Платформы/platform/data/DatareonPlatformMessageStorage/идентификатор_Хранилища/DatareonStorage/MessageStorage

Создание сервиса

Для создания хранилища сообщений:

  1. В ЦН перейдите в раздел Сервисы.

  2. Нажмите на кнопку + над таблицей сервисов. В рабочей области страницы отобразится интерфейс создания / редактирования сервиса.

  3. На вкладке Основные заполните следующие поля:

    • Название: произвольное название сервиса, необязательно для заполнения.

    • Имя: уникальное имя сервиса, обязательно для заполнения.

    • Комментарий: описание сервиса, необязательно для заполнения.

  4. Для создания сервиса выберите вариант Хранилище сообщений в разделе Настройка сервисов.

  5. Для активации сервиса установите флажок Включен.

  6. После внесения данных нажмите на кнопку Сохранить изменения.

  7. Нажмите на кнопку Применить конфигурацию.

Если в кластер содержит больше одного сервера, дополнительно выполните следующие шаги:

  1. Скопируйте идентификатор сервиса из адресной строки:

    ../../_images/storage_setup1.png
  2. Перейдите на страницу сервера, к которому нужно привязать сервис.

  3. Перейдите в режим редактора конфигурации.

  4. В значении ключа modules добавьте в массив элемент-объект, в значении ключа entityId которого укажите идентификатор сервиса Хранилища сообщений.

    {
      "$type": "DT.ClusterConfiguration.Allocation.AllocationInfo, DT_Core",
      "entityId": "7dda7961-9825-448b-8c41-ac3526a490af",
      "reason": "FromConfig",
      "initialReason": "FromConfig"
    }
    
  5. После внесения данных нажмите на кнопку Сохранить.

  6. Нажмите на кнопку Применить конфигурацию:

    ../../_images/config_apply4.png

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

Путь к каталогу с файлами DatareonDB Хранилища сообщений отображается на странице Хранилища сообщений в ЦМ. Для резервного копирования данных следует скопировать этот каталог:

../../_images/ms_storage_path.png

Работа с записями Хранилища сообщений

Работа с записями Хранилища сообщений возможна в ЦМ на вкладке Сообщения.

Описание работы с шагами процессов обработки Хранилища сообщений находится в разделе Работа с Хранилищем сообщений.

Примеры методов C# для работы с записями Хранилища сообщений доступны в разделе Функции Хранилища сообщений.

Индексирование данных

Индексирование данных используется для выполнения поиска по телам сообщений в Хранилище.

Механизм индексирования данных запускается после загрузки Хранилища сообщений и завершения основных задач базы данных (проверка целостности, формирование новых колонок и заполнение их значениями). Индексирование данных повторяется каждые 5 минут в течение всего времени работы Платформы.

Примечание

По умолчанию индексирование данных выключено.

Включение / выключение индексирования осуществляется в ЦН в рабочей области сервиса Хранилище сообщений в режиме редактора конфигурации. При этом используется параметр сервиса "MessageStorageIndexationOptions" (тип строка) со следующими значениями:

  • "None" - индексирование данных включено.

  • "IndexationStopped" - индексирование данных выключено (значение по умолчанию).

Примечание

При изменении данного параметра требуется перезапуск сервиса.

Индексы сохраняются в следующем каталоге:

путь_к_каталогу_с_данными_ПлатформыDataMessageStorageSearchEngineидентификатор_сервиса_Хранилище_сообщений

В журнале сервиса отображаются записи об индексировании данных (уровень логирования Verbose).

Механизм индексирования отбирает не более 100 сообщений для индексирования за 1 раз. Тело каждого сообщения обрабатывается как обычная строка.

Каждому сообщению присваивается индекс, представляющий собой позицию идентификатора сообщения в файле Main. Файл содержит идентификаторы сообщений, на которые указывают токены, и позиции сообщений в базе данных Datareon DB.

Токены состоят из словесных сочетаний, Guid, чисел и меток дата-время, которые сохраняются поисковой системой в соответствующей папке.

Примечание

Отдельные символы, являющиеся частью словосочетания, не определяются как токены. Например, в словосочетании Как-нибудь дефис не является токеном, поскольку словосочетание Как-нибудь само по себе является отдельным токеном.

Под каждый токен строкового типа выделен свой файл, который содержит набор индексов, описанных выше.

Guid и число также хранятся в файлах. Для токена, содержащего Guid или число вычисляется хеш, по которому будет осуществляться поиск. Хеш-число хранится в соответствующем файле, содержащем множество хеш-ключей (не более 10000000 (десяти миллионов)). Данные размещаются следующим образом: хеш-число, количество индексов, и сами индексы. Данные хранятся в бинарном формате.

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

Для меток дата-время хеш-число вычисляется в нескольких комбинациях для возможности поддержки поиска по простой дате, дате с указанием времени и году с месяцем.

Метки дата-время содержатся в папках, структурированных следующим образом: {год}/{месяц}/{число} + файл с датой. Внутри файла данные размещаются без агрегации.

Время работы механизма индексирования не регламентировано и зависит от количества и размера сообщений.

Политика хранения данных

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

Политика хранения данных настраивается в конфигурации сервиса при помощи одного из следующих параметров:

  • "maxNumberOfStoredMessages" - количество последних сообщений, которые должны остаться в Хранилище после автоматического удаления более старых сообщений в соответствии с установленным ограничением.

  • "maxMessageRetentionTimeInDays" - количество дней хранения сообщений в Хранилище. После автоматического удаления в Хранилище останутся только сообщения, срок хранения которых не превышает установленное ограничение. Остальные сообщения будут автоматически удалены.

Значение параметров по умолчанию - 0 (выключено). Для включения параметров требуется установить значения, отличные от 0. Диапазон значений параметров: 0 - 2147483647.

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