Настройки конфигурационного файла *.conf для адаптера под формат CloudEvent#
Данный раздел применим для роли Администратор.
Предусловия#
Не требуются.
Последовательность выполнения#
Параметры настройки конфигурации#
Все конфигурационные настройки для адаптера под формат CloudEvent задаются в файле *.conf, который необходимо заполнить до запуска процесса установки EVTA.
В таблице представлены параметры настройки, задаваемые в файле *.conf:
Параметр |
Описание |
|---|---|
|
Список параметров с настройками транспорта |
|
Тип транспорта |
|
Cписок параметров с настройками для сообщений |
|
Имя используемого транспорта (ключ для получения параметров берется из блока |
|
Имя используемого топика |
|
Массив с разрешенными операциями для данного сообщения |
|
Идентификатор клиента |
|
Массив разрешенных протоколов (поддерживаемые: |
|
Массив разрешенных действий (поддерживаемые: |
|
Список схем для валидации сообщения по схеме |
|
Настройки для вебхуков, используется для |
|
Настройки серверной части адаптера EVTA |
|
Тип запускаемого адаптера EVTA: |
|
Хост, на котором запускается адаптер EVTA (по умолчанию |
|
Порт, на котором запускается адаптер EVTA (по умолчанию |
|
Настройки pekko (если есть префикс «file», то берется содержимое файла по пути после префикса) |
|
Проверка вызовов на вхождение в блок |
|
Проверка вызовов на вхождение в блок |
|
Тип подписки для |
|
Общий тайм-аут на блокирующие операции |
|
Настройки транспорта (используются в режиме |
|
Имя транспорта, из которого будут вычитываться сообщения (ключ для получения параметров берется из блока |
|
Имя транспорта, в который будут записываться сообщения (ключ для получения параметров берется из блока |
|
Вебхуки для запуска на старте адаптера EVTA (имя объекта: имя вебхука) |
|
Имя вебхука |
|
Адрес, куда будут отправляться сообщения. Так же по этому ключу берутся настройки из блока |
|
Транспорт, из которого вычитываются сообщения. Так же по этому ключу берутся настройки из блока |
Примеры конфигурации#
Пример конфигурации для REST взаимодействия#
Пример полной конфигурации:
{
"transport": {
"localKafka": {
"type": "kafka",
"bootstrap.servers": "localhost:9092",
"group.id": "test1"
},
"nonexistentKafka": {
"type": "kafka",
"bootstrap.servers": "localhost:9093",
"group.id": "test"
}
},
"webhook": {
"https://localhost:1234/test": {
"type": "webhook",
"ssl.key.password": "<password>",
"ssl.keystore.location": "/path/to/grpc-adapter.jks",
"ssl.keystore.password": "<password>",
"ssl.truststore.location": "/path/to/grpc-adapter.jks",
"ssl.truststore.password": "<password>",
"ssl.endpoint.identification.algorithm": "dn",
"ssl.allowed.dn": "CN=test1; CN=test2"
}
},
"message": {
"ru.sbt.ss.event": {
"transport": "localKafka",
"topic": "cloudevents",
"members": [
{
"memberId": "<memberId>",
"protocols": [
"rest",
"grpc"
],
"actions": [
"publish",
"subscribe",
"commit"
]
}
]
},
"ru.sbt.ss.event2": {
"transport": "localKafka",
"topic": "cloudevents2"
},
"ru.sbt.ss.event.nonexistent": {
"transport": "nonexistentKafka",
"topic": "cloudevents"
}
},
"server": {
"type": "rest",
"membersCheck": "true",
"ssl.protocol": "TLSv1.2",
"ssl.key.password": "<password>",
"ssl.keystore.location": "/path/to/grpc-adapter.jks",
"ssl.keystore.password": "<password>",
"ssl.truststore.location": "/path/to/grpc-adapter.jks",
"ssl.truststore.password": "<password>",
"ssl.endpoint.identification.algorithm": "dn",
"ssl.allowed.dn": "CN=test1; CN=test2",
"pekko": "file:/path/to/pekko.conf"
},
"webhooks": {
"localWebhook": {
"url": "https://localhost:1234/test",
"messageName": "ru.sbt.ss.event"
}
}
}
Пример конфигурации для gRPC взаимодействия#
{
"transport": {
"localKafka": {
"type": "kafka",
"bootstrap.servers": "localhost:9092",
"group.id": "test1",
"auto.offset.reset": "earliest",
"enable.auto.commit": "false",
"timeout": "100000"
}
},
"webhook": {
},
"message": {
"publication": {
"ru.sbt.ss.event": {
"transport": "localKafka",
"topic": "cloudevents",
"members": [
{
"memberId": "<memberId>",
"protocols": [ "rest","grpc" ],
"actions": [ "publish","subscribe","commit","unsubscribe" ]
}
],
"type": "json",
"schemas": [ "src/test/resources/json/schema.json" ]
},
"ru.sbt.ss.event2": {
"transport": "localKafka",
"topic": "cloudevents2",
"schemas": [ "src/test/resources/json/schema.json" ]
}
},
"subscription": {
"ru.sbt.ss.event": {
"transport": "localKafka",
"topic": "cloudevents",
"members": [
{
"memberId": "<memberId>",
"protocols": ["rest","grpc"],
"actions": ["publish","subscribe","commit","unsubscribe"]
}
],
"type": "json",
"schemas": [ "src/test/resources/json/schema.json" ]
},
"ru.sbt.ss.event2": {
"transport": "localKafka",
"topic": "cloudevents2",
"schemas": [ "src/test/resources/json/schema.json" ]
}
}
},
"server": {
"type": "grpc",
"membersCheck": "true",
"checkDn": "true",
"port": "12345"
},
"client": {
}
}
Пример конфигурации для обновления транспорта#
{
"transport": {
"localKafka": {
"type": "kafka",
"bootstrap.servers": "localhost:9092",
"group.id": "test_update",
"auto.offset.reset": "earliest"
}
}
}
Поддерживаемые типы транспорта#
kafka — Platform V Corax/Apache Kafka;
artemis — брокер Artemis MQ;
rabbit — брокер RabbitMQ.
Подробнее о поддерживаемых типах транспорта описано в разеле Настройки конфигурационного файла adapter.conf, подраздел: «Поддерживаемые типы транспорта для параметров Сonsumer и Producer».
Конфигурация HealthCheck#
Настройки HealthCheck:
Имя |
Описание |
|---|---|
healthCheck.host |
Хост, на котором будет доступен HealthCheck |
healthCheck.port |
Порт, на котором будет доступен HealthCheck |
Дополнительные настройки HealthCheck можно прописать с добавлением префикса healthCheck..
Внешний API сервиса#
Имя |
Описание |
Параметры |
Тип вызова |
Результаты |
Потребители |
|---|---|---|---|---|---|
Проверка работоспособности |
АС отправляет REST-запрос типа GET |
см. раздел «Принципы работы REST-взаимодействий EVTA» |
Синхронный |
см. раздел «Возвращаемые статусы» |
Администраторы |
Запрос проверяет, готов ли EVTA обслуживать запросы |
АС отправляет REST-запрос типа GET |
см. раздел «Принципы работы REST-взаимодействий EVTA» |
Синхронный |
см. раздел «Возвращаемые статусы» |
Администраторы |
Описание поддерживаемых REST эндпоинтов#
{
"openapi": "3.1.0",
"info": {
"title": "REST API reactive stream adapter для версии протокола http/2.0",
"description": "REST API Reactive stream adapter, которое позволяет обращаться к брокерам сообщений как egress.",
"version": "1.0.0"
},
"servers": [
{
"url": "http://localhost:8085",
"description": "Проверка адаптера"
},
{
"url": "https://localhost:10087",
"description": "Публикация"
},
{
"url": "https://localhost:10095",
"description": "Подписка"
}
],
"paths": {
"/health": {
"description": "Проверка работоспособности EVTA",
"get": {
"servers": [
{
"url": "http://localhost:8085",
"description": "Проверка адаптера"
}
],
"tags": [
"Проверка работоспособности"
],
"summary": "Для администраторов",
"description": "Запрос для проверки работоспособности EVTA",
"operationId": "health",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"example": {
"status": "available"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"example": {
"status": "Incorrect uri"
}
}
}
}
}
}
},
"/ready": {
"description": "Готовность EVTA обслуживать запросы",
"get": {
"servers": [
{
"url": "http://localhost:8085",
"description": "Проверка работы адаптера"
}
],
"tags": [
"Проверка работоспособности"
],
"summary": "Для администраторов",
"description": "Запрос проверяет, готов ли EVTA обслуживать запросы",
"operationId": "healthReadiness",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error"
},
"example": {
"status": "running"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error"
},
"example": {
"status": "Incorrect uri"
}
}
}
}
}
}
}
},
"components": {
"schemas": {
"error": {
"type": "object",
"description": "Расшифровка кода ошибки",
"properties": {
"status": {
"type": "string",
"description": "Сообщение"
}
}
},
"baseResponsehttp2.0": {
"type": "object",
"required": [
"body",
"transportId"
],
"description": "Схема запроса",
"properties": {
"body": {
"type": "string",
"description": "Тело сообщения"
},
"key": {
"type": "string",
"description": "Ключ сообщения"
},
"transportId": {
"type": "string",
"description": "Id для коммита"
},
"headers": {
"type": "object",
"description": "Заголовки сообщения",
"properties": {
"header1": {
"type": "string",
"description": "Заголовок 1 сообщения"
},
"headerN": {
"type": "string",
"description": "Заголовок N сообщения"
}
}
}
}
},
"baseRequesthttp2.0": {
"type": "object",
"required": [
"body"
],
"description": "Схема запроса",
"properties": {
"body": {
"type": "string",
"description": "Тело сообщения"
},
"key": {
"type": "string",
"description": "Ключ сообщения"
},
"headers": {
"type": "object",
"description": "Заголовки сообщения",
"properties": {
"header1": {
"type": "string",
"description": "Заголовок 1 сообщения"
},
"headerN": {
"type": "string",
"description": "Заголовок N сообщения"
}
}
}
}
},
"commitMessage": {
"type": "object",
"required": [
"idsToCommit"
],
"properties": {
"idsToCommit": {
"type": "array",
"items": {
"type": "string"
},
"description": "Массив id сообщений"
}
}
}
}
}
}
Правила эксплуатации#
Не требуется.
Результат#
Конфигурационный файл *.conf настроен.