NAV
json

SAP-po-integration: сервис для интеграции с шиной данных полюса sap-po

Сервис получает НМД из СЭД.
Команды могут приходить как по HTTP, так и через Kafka в топик sap_po_integration_commands.

Сервис разбит на несколько модулей, в виде sbt проектов:

Информация по добавлению команд можно прочитать в описании шаблона

Локальный запуск

При запуске сервиса ожидается, что уже развернута необходимая инфраструктура:

Запуск из консоли с помощью SBT

SAP_PO_INTEGRATION_DB_HOST=localhost SAP_PO_INTEGRATION_DB_PORT=5432 SAP_PO_INTEGRATION_DB_NAME=sap-po-integration SAP_PO_INTEGRATION_DB_USER=postgres SAP_PO_INTEGRATION_DB_PASSWORD=12345 sbt boot/run

Список переменных окружения сервиса SAP-po-integration

Все доступные переменные окружения для настройки сервиса.

Переменная Тип Обязательная Значение по умолчанию Описание
SAP_PO_INTEGRATION_HTTP_HOST string нет 0.0.0.0 Хост, на котором слушает HTTP-сервер
SAP_PO_INTEGRATION_HTTP_PORT int нет 8999 Порт, на котором слушает HTTP-сервер
SAP_PO_INTEGRATION_KAFKA_SERVERS string да localhost:9092 Адрес Kafka
SAP_PO_INTEGRATION_KAFKA_TOPIC string нет sap_po_integration_commands Название кафка-топика для получения команд. Сервис получает кафка-команды по нему, но и также сам публикует это название в CommandDiscovery.
SAP_PO_INTEGRATION_KAFKA_CONSUMER_GROUP string нет sap_po_integration_consumer_group Имя consumer-группы для чтения из кафка-топика команд. Не должна меняться и не должна быть пустой, иначе сервис перечитает свои команды при перезапуске.
SAP_PO_INTEGRATION_KAFKA_PARTITIONS int нет 10 Число читаемых партиций из кафка-топика команд.
SAP_PO_INTEGRATION_KAFKA_CONSUMER_RESTART_MIN_BACKOFF duration string нет 1 second Изначальная задержка до рестарта консьюмера после падения (увеличивается в 2 раза после каждого рестарта)
SAP_PO_INTEGRATION_KAFKA_CONSUMER_RESTART_MAX_BACKOFF duration string нет 30 seconds Максимальное задержка до рестарта консьюмера после падения
SAP_PO_INTEGRATION_KAFKA_CONSUMER_RESTART_RANDOM_FACTOR double нет 0.2 Рандомный фактор для вычисления задержки перед следующим рестратом консьюмера (При значении 0.2 задержка может быть до 20% больше, чем при 0)
SAP_PO_INTEGRATION_KAFKA_CONSUMER_RESTART_MAX_RESTARTS int нет 5 Максимальное число рестартов консьюмера после падения (в пределах SAP_PO_INTEGRATION_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN)
SAP_PO_INTEGRATION_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN duration string нет 5 minutes Временной отрезок, в который SAP_PO_INTEGRATION_KAFKA_CONSUMER_RESTART_MAX_RESTARTS ограничивает число рестартов
SAP_PO_INTEGRATION_KAFKA_COMMANDEVENT_TOPIC string да commandevents Название кафка-топика для отправки сообщений со статусами выполняемых команд. ОБЯЗАТЕЛЬНО должно соответствовать названию этого топика в сервисе статуса команд.
SAP_PO_INTEGRATION_KAFKA_AUTH_USER string нет Название учетной записи Kafka. Если название не указано, то настройки авторизации не будут применены.
SAP_PO_INTEGRATION_KAFKA_AUTH_PASSWORD string нет Пароль учетной записи Kafka.
SAP_PO_INTEGRATION_KAFKA_AUTH_TRUSTSTORE_LOCATION string нет Путь до хранилища сертификатов (Java key store). Если путь не указан, то сертификат применятся не будет.
SAP_PO_INTEGRATION_KAFKA_AUTH_TRUSTSTORE_PASSWORD string нет Пароль к хранилищу сертификатов.
SAP_PO_INTEGRATION_KAFKA_AUTH_MODE string нет Режим аутентификации: static - одна учетная запись на все запросы, mapping - учетная запись зависит от запроса
SAP_PO_INTEGRATION_KAFKA_AUTH_CONFIG string нет Настройки для аутентификации: если AuthMode = mapping, то необходим JSON с List[KafkaAuthConfig]
SAP_PO_INTEGRATION_KAFKA_AUTH_CACHE_SIZE int нет Максимальный размер кеша для Kafka producer (количество активных соединений).
SAP_PO_INTEGRATION_KAFKA_AUTH_CACHE_TTL duration string нет Время жизни Kafka producer в кеше.
SAP_PO_INTEGRATION_KAFKA_CONNECTION_CHECK_TEST_MESSAGES_INTERVAL duration string нет 4 minutes Применяется только для producer-ов со способом аутентификации kerberos. Интервал отправки тестовых сообщений кафки в топик connectionCheck.testMessagesTopicName. Тестовые сообщения (null, service producer test) отправляются регулярно с этим интервалом.
SAP_PO_INTEGRATION_KAFKA_CONNECTION_CHECK_INTERVAL duration string нет 60 seconds Применяется только для producer-ов со способом аутентификации kerberos. Интервал проверки того, сколько тестовых сообщений было отправлено за данный период. Если количество сообщений за этот период равно количеству сообщений за прошлый период, то начинается отсчет периода без сообщений.
SAP_PO_INTEGRATION_KAFKA_CONNECTION_CHECK_FAILED_AFTER_INTERVAL duration string нет 5 minutes Применяется только для producer-ов со способом аутентификации kerberos. Максимальная продолжительность периода без успешно отправленных тестовых сообщений. По ее достижении сервис будет объявлен больным.
SAP_PO_INTEGRATION_CONSUL_ADDR url string нет http://localhost:8500 Адрес Сonsul.
SAP_PO_INTEGRATION_CONSUL_AUTH_USER string нет Название учетной записи Сonsul. Если название не указано, то настройки авторизации не будут применены.
SAP_PO_INTEGRATION_CONSUL_AUTH_PASSWORD string нет Пароль учетной записи Сonsul.
SAP_PO_INTEGRATION_TRACE_DURATION boolean нет false Признак необходимости трассировки выполнения команд
SAP_PO_INTEGRATION_DISCOVERABLE_ID string нет another_SAP_PO_INTEGRATION_service_instance ID сервиса в ServiceDiscovery
SAP_PO_INTEGRATION_DISCOVERABLE_NAME string нет sap-po-integration Имя сервиса в ServiceDiscovery
SAP_PO_INTEGRATION_DISCOVERABLE_HOST string да localhost Хост, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. Указанный адрес должен быть виден другим сервисам. Пример: имя kubernetes/docker_swarm service
SAP_PO_INTEGRATION_DISCOVERABLE_PORT int нет Порт, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. По умолчанию указывается порт, который слушает HTTP-сервер.
SAP_PO_INTEGRATION_DISCOVERABLE_LIVETIME duration string нет 2 minutes Период после последней отправки health check, в течение которого ServiceDiscovery считает данный сервис живым.
SAP_PO_INTEGRATION_DISCOVERABLE_HEALTHPASS string нет 1 minute Периодичность отправки health check в ServiceDiscovery
SAP_PO_INTEGRATION_SERVICE_TITLE string нет SAP-po-integration Название сервиса для отображения
SAP_PO_INTEGRATION_SERVICE_DESCRIPTION string нет Service SAP-po-integration Описание сервиса для отображения
SAP_PO_INTEGRATION_AKKA_HTTP_CLIENT_MAXCON int нет 512 Максимальное число одновременных исходящих HTTP-соединений
SAP_PO_INTEGRATION_AKKA_HTTP_CLIENT_MAXREQ int нет 1024 Максимальное число одновременных исходящих HTTP-запросов
SAP_PO_INTEGRATION_AKKA_HTTP_SERVER_MAXCON int нет 1024 Максимальное число одновременных входящих HTTP-соединений
SAP_PO_INTEGRATION_INTERNALCMD_ALLOW bool нет false Можно ли сервису отправлять внутрисистемные команды
SAP_PO_INTEGRATION_SENDERLIB_COMMANDS_CACHE_UPDATEPERIOD duration string нет 10 minutes Время кэширования данных по командам из CommandDiscovery
SAP_PO_INTEGRATION_SENDERLIB_SERVICES_CACHE_UPDATEPERIOD duration string нет 30 seconds Время кэширования данных по сервисам из ServiceDiscovery
SAP_PO_INTEGRATION_DB_HOST string да Хост БД
SAP_PO_INTEGRATION_DB_PORT int да Порт БД
SAP_PO_INTEGRATION_DB_NAME string да Имя базы в БД
SAP_PO_INTEGRATION_DB_URL jdbc url string нет JDBC-url для соединения с БД. По умолчанию собирается из других обязательных переменных. Можно указать только его, если не хочется отдельно указывать хост/порт/имя базы.
SAP_PO_INTEGRATION_DB_USER string да Пользователь БД
SAP_PO_INTEGRATION_DB_PASSWORD string да Пароль пользователя БД
SAP_PO_INTEGRATION_DB_THREADS int нет 10 Количество потоков в пуле потоков для соединения с БД
SAP_PO_INTEGRATION_DB_QUEUE_SIZE int нет 300 Размер очереди для действий базы данных, которые не могут быть выполнены немедленно, когда все потоки заняты. За пределами этого значения новые действия немедленно завершаются неудачей
SAP_PO_INTEGRATION_DB_CONN_MAX int нет 10 Максимальное количество одновременных подключений к БД
SAP_PO_INTEGRATION_DB_CONN_TIMEOUT duration string нет 20 second Максимальное время ожидания ответа для соединения к БД. Если это время превышено, а соединение не становится доступным, будет брошено исключение SQLException. 1000 мс — минимальное значение.
SAP_PO_INTEGRATION_DB_ISOLATION string нет READ_COMMITTED Уровень изоляции транзакций для новых подключений. Допустимые значения: NONE, READ_COMMITTED, READ_UNCOMMITTED, REPEATABLE_READ, SERIALIZABLE.
SAP_PO_INTEGRATION_DB_READONLY boolean нет false Read-only SQL транзакция может изменять только временные таблицы. Этот параметр управляет статусом «только для чтения» по умолчанию для каждой новой транзакции.
SAP_PO_INTEGRATION_DB_CONN_MIN int нет = DB_THREADS Минимальное количество одновременных подключений к БД
SAP_PO_INTEGRATION_DB_VALIDATION_TIMEOUT duration string нет 1 seconds Максимальное время, в течение которого соединение будет проверяться на работоспособность. 1000 мс — минимальное значение.
SAP_PO_INTEGRATION_DB_IDLE_TIMEOUT duration string нет 10 minutes Максимальное время, в течение которого соединению разрешено простаивать в пуле. Значение 0 означает, что простаивающие соединения никогда не удаляются из пула.
SAP_PO_INTEGRATION_DB_MAX_LIFETIME duration string нет 30 minutes Максимальное время жизни соединения в пуле. Когда простаивающее соединение достигает этого времени ожидания, даже если оно недавно использовалось, оно будет удалено из пула. Значение 0 указывает на отсутствие максимального срока службы.
SAP_PO_INTEGRATION_DB_INITIALIZATION_FAIL_FAST string нет false Deprecated, начиная с версии Slick 3.3.0. Определяет, будет ли пул «быстро выходить из строя», если пул не может быть успешно заполнен начальными соединениями. Если соединения не могут быть созданы во время запуска пула, будет выдано исключение RuntimeException. Это свойство не имеет никакого эффекта, если minConnections равно 0.
SAP_PO_INTEGRATION_DB_LEAK_DETECTION_THRESHOLD int нет 0 Время, в течение которого соединение может находиться вне пула, прежде чем будет зарегистрировано сообщение, указывающее на возможную утечку соединения. Значение 0 означает, что обнаружение утечек отключено. Наименьшее приемлемое значение для включения обнаружения утечек составляет 10 с.
SAP_PO_INTEGRATION_DB_CONNECTION_TEST_QUERY string нет SELECT 1 Выражение, которое будет выполнено непосредственно перед получением соединения из пула для проверки того, что соединение с базой данных все еще активно. Оно зависит от базы данных и должно представлять собой запрос, требующий минимальной обработки базой данных (например, «VALUES 1»). Если этот параметр не установлен, вместо него используется метод JDBC4 Connection.isValid().
SAP_PO_INTEGRATION_DB_REGISTER_MBEANS boolean нет false Зарегистрированы ли JMX Management Beans («MBeans»)
SAP_PO_INTEGRATION_DB_AUTO_COMMIT boolean нет true Это свойство определяет то, как будут вести себя по умолчанию возвращаемые соединения относительно autocommit-а.
SAP_PO_INTEGRATION_DB_SCHEMA string нет public Устанавливает schema по умолчанию
SAP_PO_INTEGRATION_DB_ISOLATE_INTERNAL_QUERIES boolean нет false Определяет то, изолируются ли с помощью транзакций внутренние запросы пула(например запрос connection alive test). Свойство применяется только если autoCommit выключен.
SAP_PO_INTEGRATION_DB_INITIALIZATION_FAIL_TIMEOUT int нет 1 Работает, начиная с версии Slick 3.3.0. Определяет, будет ли пул «быстро выходить из строя», если пул не может быть успешно заполнен начальными соединениями. Любое положительное число считается числом миллисекунд для попытки получить начальное соединение;поток приложения будет заблокирован в течение этого периода. Если соединение не может быть получено до истечения этого времени,будет брошено исключение. Данный таймаут применяется после периода connectionTimeout. Если значение равно нулю (0),HikariCP попытается получить и проверить подключение. Если соединение получено,но проверка не пройдена, будет брошено исключение, и пул не будет запущен. Однако,если соединение не может быть получено, пул запустится,но последующие попытки получить соединение могут потерпеть неудачу.Значение меньше нуля пройдет любую первоначальную попытку подключения, и пул немедленно запустится,пытаясь получить соединения в фоновом режиме.Следовательно, последующие попытки получить соединение могут потерпеть неудачу.
SAP_PO_INTEGRATION_AUTHZFORCE_ADDR string нет http://localhost:8080/authzforce-ce Адрес AuthZforce server
SAP_PO_INTEGRATION_AUTHZFORCE_DOMAIN string нет Доступный DomainID в AuthZforce server
SAP_PO_INTEGRATION_LOG_LEVEL string нет INFO Общий уровень логирования в сервисе
SAP_PO_INTEGRATION_LOG_LEVEL_AKKA string нет INFO Уровень логирования для akka
SAP_PO_INTEGRATION_LOG_LEVEL_LIQUIBASE string нет INFO Уровень логирования для liquibase (миграции)
SAP_PO_INTEGRATION_LOG_LEVEL_APPLICATION string нет DEBUG Уровень логирования для application
SAP_PO_INTEGRATION_LOG_LEVEL_SLICK_STATEMENT string нет DEBUG Уровень логирования запросов, отправляемых slick в БД
SAP_PO_INTEGRATION_LOG_LEVEL_SLICK_BENCHMARK string нет OFF Уровень логирование бенчмарков выполнения запросов slick
SAP_PO_INTEGRATION_LOG_LEVEL_KAFKA_PRODUCER string нет WARN Уровень логирования конфига kafka-producer
SAP_PO_INTEGRATION_LOG_LEVEL_KAFKA_CONSUMER string нет WARN Уровень логирования конфига kafka-consumer
SAP_PO_INTEGRATION_LOG_LEVEL_HTTP_SERVER string нет WARN Уровень логирования HTTP-сервера
SAP_PO_INTEGRATION_LOG_LEVEL_AKKAHTTPSENDER string нет WARN Уровень логирования для отправки команд через HTTP. На уровне INFO логируется трассировка, если она включена
SAP_PO_INTEGRATION_LOG_LEVEL_KAFKASENDER string нет WARN Уровень логирования для отправки команд через Kafka. На уровне INFO логируется трассировка, если она включена
SAP_PO_INTEGRATION_LOG_LEVEL_VERDI_DISPATCHER string нет WARN Уровень логирования при отправки команд в Verdi Dispathcer. На уровне INFO логируется трассировка, если она включена
SAP_PO_INTEGRATION_LOG_LEVEL_COMMAND_LOGGER string нет WARN Уровень логирования для проверки состояний команд в сервисе статусов
SAP_PO_INTEGRATION_LOG_LEVEL_TEAM_ROUTES string нет TRACE Уровень логирования для роутов /team
SAP_PO_INTEGRATION_LOG_OUTPUT string нет STDOUT Вывод лога
SAP_PO_INTEGRATION_SYSLOG_TYPE string нет UDP Тип передачи syslog
SAP_PO_INTEGRATION_LOGGING_SRC_IP string нет для параметра src в логах
SAP_PO_INTEGRATION_LOGGING_SRC_HOST string нет для параметра shost в логах
SAP_PO_INTEGRATION_LOGGING_DST_IP string нет для параметра dst в логах
SAP_PO_INTEGRATION_LOGGING_CEF_VER string нет 0 версия CEF
SAP_PO_INTEGRATION_LOG_LEVEL_NMD_HANDLERS string нет DEBUG Уровень логирования для обработчиков команд
SAP_PO_INTEGRATION_LOG_LEVEL_NMD_IMPORT_SERVICE string нет DEBUG Уровень логирования для сервиса импорта
SAP_PO_INTEGRATION_HTTP_CLIENT_CONNECTION_TIMEOUT duration string нет 5 seconds Максимальное время ожидания подключения http клиента
SAP_PO_INTEGRATION_HTTP_CLIENT_REQUEST_TIMEOUT duration string нет 5 seconds Максимальное время ожидания ответа для http клиента
SAP_PO_INTEGRATION_FS_URI string да http://localhost:9000/ Адрес файлового хранилища
SAP_PO_INTEGRATION_FS_ACCESS_KEY_ID string да minioadmin Имя пользователя файлового хранилища
SAP_PO_INTEGRATION_FS_SECRET_ACCESS_KEY string да minioadmin Пароль пользователя файлового хранилища
SAP_PO_INTEGRATION_FS_UPLOAD_PARALLELISM int нет 4 Параллелизм для загрузки файлов
SAP_PO_INTEGRATION_FS_AUTH_MODE string нет static Режим аутентификации: static - одна учетная запись на все запросы, mapping - учетная запись зависит от запроса
SAP_PO_INTEGRATION_FS_AUTH_CONFIG string нет Настройки для аутентификации: если AuthMode = mapping, то необходим JSON с List[FSBucketConfig] соответствует полю authConfig FSConfigRep
SAP_PO_INTEGRATION_FS_CACHE_SIZE int нет 1 Максимальный размер кеша клиентов для хранилища файлов (количество активных соединений).
SAP_PO_INTEGRATION_FS_CACHE_TTL duration string нет Время жизни клиента в кеше
SAP_PO_INTEGRATION_SED_AUTHORIZATION_ENABLED boolean нет true Возможность отключить проверку авторизации для методов /api/sed/*
SAP_PO_INTEGRATION_FILE_SERVICE_URL string да http://127.0.0.1:3000/ Путь к сервису файлового хранилища SAP Polyus
SAP_PO_INTEGRATION_FILE_SERVICE_FILE_URL string нет /RESTAdapter/SOPR/File Ресурс получения файла сервиса файлового хранилища SAP Polyus
SAP_PO_INTEGRATION_FILE_SERVICE_AUTH_USERNAME string да Пользователь Basic Authentication для файлового хранилища SAP Polyus
SAP_PO_INTEGRATION_FILE_SERVICE_AUTH_PASSWORD string да Пароль Basic Authentication для файлового хранилища SAP Polyus
SAP_PO_INTEGRATION_TEMP_BUCKET string да Bucket для временных файлов
SAP_PO_INTEGRATION_NMD_SCHEMA_MIGRATION_TIMEOUT duration string нет 30 seconds Время на выполнение кастомной миграции схемы NMD в сервисе data-model
SAP_PO_INTEGRATION_NMD_REIMPORT_DELAY duration string нет 10 seconds Задержка перед выполнением следующей итерации импорта
SAP_PO_INTEGRATION_NMD_IMPORT_ERROR_PAUSE duration string нет 1 minute Пауза при обнаружении ошибки импорта перед началом новой итерации импорта
SAP_PO_INTEGRATION_PARALLEL_FILES_REUPLOAD int нет 7 Количество одновременно скачиваемых файлов из файлового хранилища SAP Polyus и загружаемых в S3
SAP_PO_INTEGRATION_PARALLEL_NMDS_SUBMIT int нет 5 Количество одновременно сохраняемых НМД в Data-Model
SAP_PO_INTEGRATION_PARALLEL_STORED_OBJECTS_SUBMIT int нет 16 Количество одновременно сохраняемых объектов в Data-Model
SAP_PO_INTEGRATION_PARALLEL_CATALOG_ITEMS_SUBMIT int нет 10 Количество одновременно сохраняемых справочных элементов в Alexandrina
SAP_PO_INTEGRATION_STATUS_CHECK_COUNT_DOWN duration string да 20 minutes Задает длительность таймера (N времени), после обработки последней неошибочной записи, перед проверкой.
SAP_PO_INTEGRATION_WAITING_CHECK_COUNT_DOWN duration string да 70 minutes Задает длительность таймера (N времени), запускаемому и откладываемому после получения каждой НМД из потока, по истечению которого произойдет ревизия отсутствующих (недополученных).
SAP_PO_INTEGRATION_JOURNAL_MODE string нет WriteToJournal Режим журналирования Nestor. Допустимые значения: WriteToJournal (Отправка в сервис журналирования), WriteToTopic (Отправка события в очередь)
SAP_PO_INTEGRATION_JOURNAL_TOPIC string да, если переменная SAP_PO_INTEGRATION_JOURNAL_MODE = WriteToTopic "" Название очереди журналирования. Для режима WriteToJournal значение игнорируется.
SAP_PO_INTEGRATION_NOTIFICATION_SETTINGS_EMAIL_TOPIC string нет "email" Название очереди уведомлений на почту. Устанавливается, если на стенде есть префикс у названий очередей.

Список команд сервиса SAP-po-integration

В описании команд используется путь/route для отправки команды в сам сервис, а не в ApiGateway. В качестве Input-а для команд, сервис всегда ожидает CommandRequest (как и любой другой сервис, принимающий команды), так что в описании команды указано лишь описание поля payload для CommandRequest.

В сервисе реализованы команды:

MasterNmds

Принимает поток из главных NMD сущностей, имеют первый приоритет.

Команда Путь
_ HTTP POST "/api/sed/v1/master-nmds"

Payload для команды

[
  {
    "<MasterNmdField1>": "..."
  }
]

Результат выполнения команды

201 Created

Nmds

Принимает поток из NMD сущностей.

Команда Путь
_ HTTP POST "/api/sed/v1/nmds"

Payload для команды

[
  {
    "<NmdField1>": "..."
  }
]

Результат выполнения команды

201 Created

MasterNmd

Поле Тип Обязательное Описание
нет валидации JSON да -

Nmd

Поле Тип Обязательное Описание
нет валидации JSON да -