Сервис синхронизации Exchange Listener
Glossary Item Box
Общие сведения
Сервис синхронизации Exchange Listener реализует синхронизацию Creatio с MS Exchange по протоколу EWS (Exchange Web Services). В данной статье описан процесс разворачивания компонента Exchange Listener для системы установленной on-site.
Сервис состоит из двух обязательных компонентов:
- основной модуль Exchange Listener;
- NoSQL СУБД Redis.
Модуль Exchange Listener инициирует исходящее подключение к EWS API с учетными данными почтового ящика и создает подписку (subscription) для получения событий при поступлении новых писем. Открытая подписка остается в памяти компонента для обеспечения максимально оперативной реакции на получение нового письма. При получении события о новой почте выполняется загрузка экземпляра письма.
СУБД Redis используется для создания масштабируемой и отказоустойчивой системы узлов-обработчиков. Хранилище Redis содержит в себе информацию про обслуживаемые почтовые ящики, что позволяет любому контейнеру обработать запросы Creatio на создание новой подписки или проверить статус конкретной подписки, независимо от того, на каком узле открыта подписка.
Обязательные требования к Redis:
- разрешен анонимный доступ;
- выделена отдельная база данных для работы сервиса Exchange Listener.
Для разворачивания сервиса Exchange Listener достаточным условием является использование in-memory хранилища.
Рекомендуемый способ разворачивания сервиса
Для разворачивания сервиса предпочтительным способом является использование оркестратора Kubernetes и пакетного менеджера Helm.
Целевое окружение:
- Кластер Kubernetes. Подробно о том, как настроить и администрировать кластер описано на сайте документации Kubernetes.
- Установленный пакетный менеджер Helm. Установка пакетного менеджера подробно описана на сайте документации Helm.
После настройки необходимого окружения можно приступать к разворачиванию сервиса.
Шаг 1. Установка Redis
Установка Redis с использованием Helm детально описана на сайте GitHub.
Пример команды для установки Redis:
helm install --namespace <namespace name> --set usePassword=false --set=slave.persistence.enabled=false --set master.persistence.enabled=false --set cluster.enabled=false --name <redis_deployment_name> stable/redis
Шаг 2. Установка модуля Exchange Listener
Для установки модуля нужно скачать helm-пакет.
Доступные параметры helm-пакета описаны ниже в табл. 1.
ВАЖНО
Для более новых версий Kubernetes необходимо будет указать также версию API, добавив параметр
--set apiVersion=apps/v1
Пример команды для установки Exchange Listener с использованием адреса и относительного пути сервиса:
helm install --set env.host=<redis_host> --set ApiUrl=<kubernetes_url> --set ingress.path=<listener_path> --set apiVersion=apps/v1 --namespace <namespace name> --name exchangelistener </path/to/helm/exchangelistener.tgz>
Адрес сервиса Exchange Listener — <kubernetes_url>/<listener_path>.
Проверить доступность можно сделав запрос по адресу <kubernetes_url>/<listener_path>/api/listeners/status (рис. 1).
Пример команды для установки Exchange Listener с использованием Node IP и адреса порта:
helm install --set env.host==<redis_host> --set service.type=<node_IP> --set service.nodePort=<node_port> --set apiVersion=apps/v1 --namespace <namespace name> --name exchangelistener </path/to/helm/exchangelistener.tgz>
Адрес сервиса Exchange Listener — <node_IP:node_port>.
Проверить доступность можно сделав запрос по адресу <node_IP:node_port>/api/listeners/status (рис. 1).
Рис. 1. — Пример ответа сервиса exchange listener
Масштабирование
По умолчанию обработка запросов производится отдельными узлами типа StatefulSet из расчета 1 реплика обработчика на 50 активных почтовых ящиков. За количество реплик отвечает параметр replicaCount (табл. 1). При необходимости нужно увеличить количество обработчиков, указав необходимое значение при установке. Возможна настройка автоматического масштабирования по количеству активных подписок. Для получения подробностей по организации таких сценариев нужно сделать запрос в support@creatio.com.
Табл 1. — Доступные параметры helm-пакета Exchange Listener
Название параметра | Описание параметра | Значение по умолчанию |
---|---|---|
replicaCount | Количество StatefulSet-обработчиков запросов. | 2 |
service.type | Тип сервиса (детально типы сервисо Kubernetes описаны в документации). | ClusterIP |
service.nodePort | Если параметр service.type равен NodePort, то в этом параметре указывается внешний порт сервиса (детально тип NodePort описан в документации Kubernetes). | |
env.host | Адрес хоста Redis | |
env.port | Порт хоста Redis | 6379 |
env.base | Номер базы данных Redis | 0 |
ingress.enabled | Использование переопределения адресов при помощи ingress | true |
ApiUrl | Адрес сервиса при ingress.enabled=true | |
ingress.path | Относительный путь сервиса | |
log4Net.level | Уровень логирования по умолчанию | Info |
Настройка сервиса Exchange Listener на стороне Creatio
Шаг 1. Проверка доступности анонимного сервиса ExchangeListenerService.
Анонимный сервис ExchangeListenerService должен быть доступен по адресу [Адрес приложения Creatio]/0/ServiceModel/ExchangeListenerService.svc (рис. 2).
Рис. 2. — Пример ответа сервиса ExchangeListenerService
Шаг 2. Корректировка системных настроек
ExchangeListenerServiceUri – [адрес сервиса, используемый при установке]/api/listeners.
BpmonlineExchangeEventsEndpointUrl – [адрес анонимного сервиса ExchangeListenerService]/NewEmail, например https://mycreatio.com/0/ServiceModel/ExchangeListenerService.svc/NewEmail.
Шаг 3. Подключение дополнительной функциональности
На странице подключения дополнительной функциональности подключить ExchangeListenerEnabled для всех пользователей.
Шаг 4. Удаление триггеров синхронизации почты
Шаг 5. Перезапуск сайта