Настройка внешних коммуникаций для Citeck
Базовые принципы
Все коммуникации настраиваются через spring конфигурацию, которая может быть настроена либо через ENV переменные, либо через конфигурационные файлы.
Конфигурационные файлы могут быть в формате либо yaml, либо properties. Правила для маппинга между ENV переменными и свойствами в конфигурационных файлах:
Разбиваем ключ по
"."(т.е.aa.customProp.cc=> ['aa','customProp','cc'])Разбиваем каждую часть ключа по словам если находим camelCase ([
'aa','customProp','cc'] => ['aa','custom','Prop','cc']) – прим. этот этап опционален и применим только к платформе Citeck. В стандартном spring его нет.Переводим все части в UPPER CASE и объединяем через символ
"_"(['aa','custom','Prop','cc'] =>AA_CUSTOM_PROP_CC)
ENV переменные имеют наивысший приоритет.
Подробнее про spring конфигурацию можно прочитать в официальной документации spring boot
JWT токен
Все микросервисы при общении между собой используют jwt токен для подписывания запросов и валидации входящих запросов. Токен задается свойством
ecos.webapp.web.authenticators.jwt.secret
и должен содержать произвольный base64 ключ, который должен совпадать у всех микросервисов.
Подключение к RabbitMQ
Каждый микросервис в платформе Citeck требует наличия основного подключения к RabbitMQ и все микросервисы должны быть подключены к одному виртуальному хосту в одном RabbitMQ.
Стандартные настройки spring.rabbitmq.* в Citeck отключены и вместо них следует использовать настройки ecos.webapp.dataSources.main-rabbitmq.*
Внимание
Подключение к RabbitMQ может быть не одно и в этом случае настройки остаются те же самые, но вместо main-rabbitmq будет другой ключ. Подробнее о наличии дополнительных подключений можно прочитать в разделах ниже.
Настройка |
Значение по умолчанию |
Описание |
|---|---|---|
ecos.webapp.dataSources.main-rabbitmq.host |
rabbitmq |
Хост для подключения к rabbitmq |
ecos.webapp.dataSources.main-rabbitmq.username |
admin |
Имя пользователя для подключения к rabbitmq |
ecos.webapp.dataSources.main-rabbitmq.password |
admin |
Пароль для подключения к rabbitmq |
ecos.webapp.dataSources.main-rabbitmq.virtualHost |
/ |
Виртуальный хост для подключения к rabbitmq |
ecos.webapp.dataSources.main-rabbitmq.executor |
rabbitmq |
Исполнитель задач, который обслуживает подключение к rabbitmq.
Эта настройка определяет пул потоков, который будет использован для обработки сообщений.
|
ecos.webapp.dataSources.main-rabbitmq.port |
5671 если включен tls
5672 если tls выключен
|
Порт для подключения к rabbitmq |
ecos.webapp.dataSources.main-rabbitmq.tls.enabled |
false |
Включено или нет шифрование |
ecos.webapp.dataSources.main-rabbitmq.tls.clientKey |
null |
Секретный ключ, который будет использован микросервисом для аутентификации. |
ecos.webapp.dataSources.main-rabbitmq.tls.trustedCerts |
null |
Список доверенных CA сертификатов |
ecos.webapp.dataSources.main-rabbitmq.tls.protocol |
TLSv1.2 |
TLS протокол |
ecos.webapp.dataSources.main-rabbitmq.tls.verifyHostname |
true |
Следует или нет проверять имя хоста сервера с значением в сертификате, который он предоставляет. |
Особенности микросервиса ecos-process
В ecos-process добавлено дополнительное подключение к rabbitmq с ключом bpmn-rabbitmq. Настройки все те же что и для main-rabbitmq, но с поправкой на дефолтные значения:
Настройка |
Значение по умолчанию |
|---|---|
ecos.webapp.dataSources.bpmn-rabbitmq.host |
${ecos.webapp.dataSources.main-rabbitmq.host} |
ecos.webapp.dataSources.bpmn-rabbitmq.username |
${ecos.webapp.dataSources.main-rabbitmq.username} |
ecos.webapp.dataSources.bpmn-rabbitmq.password |
${ecos.webapp.dataSources.main-rabbitmq.password} |
ecos.webapp.dataSources.bpmn-rabbitmq.executor |
bpmn-rabbitmq |
Подключение к Zookeeper
Каждый микросервис в платформе Citeck требует наличия подключения к общему Zookeeper.
Настройка |
Значение по умолчанию |
Описание |
|---|---|---|
ecos.webapp.zookeeper.host |
zookeeper-app |
Хост для подключения к Zookeeper |
ecos.webapp.zookeeper.port |
2181 |
Хост для подключения к Zookeeper |
Подключение к БД (JDBC)
Примечание
Стандартные spring настройки spring.datasource.* в Citeck не используются.
Ряд микросервисов требуют наличия двух основных подключений к БД PostgreSQL:
ecos-model
ecos-apps
ecos-uiserv
ecos-history
ecos-notifications
ecos-integrations
Основные подключения настраиваются через настройки:
ecos.webapp.dataSources.main.*
ecos.webapp.dataSources.main-xa-aware.*
В таблице описание настроек для main датасорса. Для main-xa-aware url, username, password должны быть такими же, а остальные настройки могут быть произвольными, но по умолчанию лучше их сделать такими же как и у main.
Настройка |
Значение по умолчанию |
Описание |
|---|---|---|
ecos.webapp.dataSources.main.url |
JDBC URL для подключения к БД |
|
ecos.webapp.dataSources.main.username |
Имя пользователя для подключения |
|
ecos.webapp.dataSources.main.password |
Пароль для подключения |
|
ecos.webapp.dataSources.main.maxPoolSize |
30 |
Максимальный размер пула подключений |
ecos.webapp.dataSources.main.minIdle |
5 |
Устанавливает минимальное количество неактивных соединений в пуле.
Пул пытается обеспечить наличие minIdle соединений, когда запускается механизм удаления неактивных объектов.
Значение этого свойства не имеет эффекта, если timeBetweenEvictionRunsMillis не имеет положительного значения.
|
ecos.webapp.dataSources.main.numTestsPerEvictionRun |
-5 |
Устанавливает максимальное количество объектов, которые будут проверяться
при каждом запуске (если таковые есть) потока очистки неактивных объектов.
Если значение положительное, то количество проверяемых объектов за один
запуск будет минимумом между указанным значением и количеством неактивных
объектов в пуле.
Если значение отрицательное, то количество проверяемых объектов будет
ceil(количество_idle_подключений / |{numTestsPerEvictionRun}|),что означает, что если значение равно -N, то примерно 1/N часть
неактивных объектов будет проверяться за один запуск.
|
ecos.webapp.dataSources.main.softMinEvictableIdleMillis |
30000 |
Устанавливает минимальное время, в течение которого соединение может оставаться
неактивным в пуле, прежде чем оно станет кандидатом на удаление потоком очистки
неактивных объектов, при условии, что в пуле остается как минимум «minIdle» соединений.
|
ecos.webapp.dataSources.main.timeBetweenEvictionRunsMillis |
60000 |
Количество миллисекунд, которое поток, отвечающий за удаление неактивных объектов, будет ждать между запусками.
Если значение меньше или равно нулю, этот поток не будет запускаться.
|
ecos.webapp.dataSources.main.maxWaitMillis |
30000 |
Максимальное время ожидания при получении подключения к БД. |
Особенности ecos-process
В ecos-process основной датасорс отсутствует, но есть два других - eproc и camunda. Они настраиваются так же как и main, но с префиксами ecos.webapp.dataSources.eproc.* и ecos.webapp.dataSources.camunda.* соответственно.
В таблице представлены значения по умолчанию, которые отличны от основных:
ecos.webapp.dataSources.camunda.url |
|
ecos.webapp.dataSources.camunda.username |
camunda |
ecos.webapp.dataSources.camunda.password |
camundapassword |
ecos.webapp.dataSources.eproc.url |
|
ecos.webapp.dataSources.eproc.username |
process |
ecos.webapp.dataSources.eproc.password |
processpassword |
Подключение к БД (Mongo)
Микросервис ecos-process требует настройку для подключения к БД mongo:
Значение по умолчанию |
Описание |
|
|---|---|---|
spring.data.mongodb.uri |
mongodb://localhost:27017/eproc |
Строка подключения к mongo. Может содержать логин и пароль. Общий вид:
mongodb://{user}:{password}@{host}:{port}/{dbname} |
Cloud config
Начиная с версии 2024.8 наличие ecos-registry стало опциональным т.к. service registry был переделан на использование Zookeeper.
Единственный функционал, который остался в ecos-registry - это cloud config, который можно выключить через переменную SPRING_CONFIG_IMPORT: и доставлять конфигурацию инфраструктурными средствами.