Документация
Всё о создании и управлении интеграционными заглушками в Badgermock.
Быстрый старт
- Разверните Badgermock — через Helm-чарт в Kubernetes, Docker-образ или JAR на сервере (детали — в инструкции по развёртыванию от вашей команды)
- Откройте
http://<APP_HOST>:8080/ui/stubs(учётные данные — уточните у администратора вашей инсталляции) - Нажмите + Новый стаб, выберите протокол HTTP
- Заполните: имя, метод
GET, путь/api/hello, тело ответа{"message": "Hello!"} - Проверьте:
curl http://<WIREMOCK_HOST>:18080/api/hello
<APP_HOST> — хост приложения (UI + API, порт 8080), <WIREMOCK_HOST> — хост WireMock-сервера (HTTP/SOAP заглушки, порт 18080). При локальном запуске оба — localhost. В Kubernetes / VM — адреса вашего окружения.
HTTP-заглушки
HTTP-заглушки работают на базе WireMock. При создании заглушки приложение регистрирует маппинг в встроенном WireMock-сервере, который слушает на отдельном порту (по умолчанию 18080).
Request Matching
Запрос сопоставляется с заглушкой по нескольким критериям. Все заданные критерии должны совпасть одновременно (логическое AND).
HTTP-метод
Обязательное поле. Поддерживаются: GET, POST, PUT, DELETE, PATCH.
Точный путь (path)
Запрос должен совпасть с путём полностью. Лидирующий / добавляется автоматически.
| Поле path | Запрос | Результат |
|---|---|---|
/api/users | GET /api/users | Совпадение |
/api/users | GET /api/users/123 | Нет |
api/users | GET /api/users | Совпадение (/ добавится) |
Паттерн пути (pathPattern) — регулярные выражения
Если заполнено поле pathPattern, оно имеет приоритет над path. Используется Java-regex для гибкого матчинга.
| pathPattern | Что матчит | Примеры запросов |
|---|---|---|
/api/users/[^/]+ | Любой ID пользователя | /api/users/123, /api/users/abc |
/api/v[0-9]+/orders | Любая версия API | /api/v1/orders, /api/v2/orders |
/api/.* | Всё, что начинается с /api/ | /api/anything/here |
/files/.+\\.pdf | Любой PDF-файл | /files/report.pdf |
/api/users/[0-9]\{1,10\} | Только числовые ID (до 10 цифр) | /api/users/42 |
path.
Query-параметры
JSON-объект с параметрами запроса. Каждый параметр проверяется на точное совпадение.
{
"status": "active",
"page": "1"
}
Запрос GET /api/users?status=active&page=1 — совпадение. Запрос GET /api/users?status=inactive&page=1 — нет.
Заголовки запроса (Header Matchers)
JSON-объект с заголовками. Каждый заголовок проверяется на точное совпадение значения.
{
"X-Api-Key": "my-secret-key",
"X-Tenant": "acme"
}
Тело запроса (Body Contains)
Строка, которая должна содержаться в теле запроса. Это поиск подстроки, не регулярное выражение.
| body_contains | Тело запроса | Результат | |||
|---|---|---|---|---|---|
"orderId" | {"orderId": "123", "amount": 100} | Совпадение | |||
"orderId" | {"id": "123"} | Нет | |||
order | {"orderId": "123"} | Совпадение (подстрока) |
| body_contains | Тело запроса | Результат |
|---|---|---|
"status":"PAID" | {"orderId":"123","status":"PAID"} | Совпадение |
"status":"PAID" | {"orderId":"123","status":"PENDING"} | Нет |
"type": "refund" | {"type": "refund", "amount": 500} | Совпадение |
"type": "refund" | {"type":"refund"} | Нет (пробелы не совпали) |
"status":"PAID" не совпадёт с "status": "PAID" (с пробелом после двоеточия). Убедитесь, что формат фрагмента совпадает с тем, как клиент отправляет JSON.
Пример: комбинация всех критериев
Заглушка сработает только если все заданные критерии совпали:
Метод: POST
Path Pattern: /api/orders/[^/]+/pay
Query Params: {"currency": "RUB"}
Header Matchers: {"X-Api-Key": "secret"}
Body Contains: "amount"
Запрос, который сматчится:
curl -X POST "http://<WIREMOCK_HOST>:18080/api/orders/ord-42/pay?currency=RUB" \
-H "X-Api-Key: secret" \
-H "Content-Type: application/json" \
-d '{"amount": 1500}'
Настройка ответа
Статус-код
HTTP-статус ответа. По умолчанию: 200. Примеры: 201 (Created), 404 (Not Found), 500 (Server Error).
Тело ответа
Текст, который WireMock вернёт в теле ответа. Может быть JSON, XML, HTML или обычный текст.
Заголовки ответа
JSON-объект с заголовками, которые добавятся к ответу:
{
"Content-Type": "application/json",
"X-Request-Id": "abc-123"
}
Задержка ответа (Response Delay)
Фиксированная задержка в миллисекундах перед отправкой ответа. Полезно для тестирования таймаутов и поведения при медленных внешних сервисах.
CORS
Если включено, к ответу автоматически добавляются CORS-заголовки и регистрируется OPTIONS preflight-маппинг:
Access-Control-Allow-Origin: *Access-Control-Allow-Methods: GET, POST, PUT, DELETE, PATCH, OPTIONSAccess-Control-Allow-Headers: *Access-Control-Max-Age: 86400
Response Templating
При включённом шаблонизировании тело ответа обрабатывается движком Handlebars. Это позволяет создавать динамические ответы, которые зависят от данных запроса.
Доступные переменные
| Выражение | Описание |
|---|---|
{{request.body}} | Полное тело запроса |
{{request.headers.X-Request-Id}} | Значение заголовка запроса |
{{request.query.page}} | Значение query-параметра |
{{request.path.[0]}} | Сегмент пути (0 = первый сегмент) |
{{request.method}} | HTTP-метод запроса |
Встроенные хелперы
| Хелпер | Пример | Результат |
|---|---|---|
now | {{now format='yyyy-MM-dd HH:mm:ss'}} | 2026-04-16 14:30:00 |
randomValue | {{randomValue type='UUID'}} | a1b2c3d4-e5f6-... |
randomValue | {{randomValue length=8 type='ALPHANUMERIC'}} | xK9mP2qL |
jsonPath | {{jsonPath request.body '$.user.name'}} | Значение поля из JSON-тела |
xPath | {{xPath request.body '//name/text()'}} | Значение из XML-тела |
soapXPath | {{soapXPath request.body '//MessageId/text()'}} | Значение из SOAP-тела |
math | {{math 1 '+' 2}} | 3 |
randomInt | {{randomInt lower=1 upper=1000}} | Случайное число |
Пример: эхо-сервер с метаданными
{
"id": "{{randomValue type='UUID'}}",
"received_at": "{{now format='yyyy-MM-dd\'T\'HH:mm:ss\'Z\''}}",
"your_name": "{{jsonPath request.body '$.name'}}",
"request_id": "{{request.headers.X-Request-Id}}",
"method": "{{request.method}}"
}
Fault Injection
Симулирование сетевых ошибок для тестирования устойчивости вашего приложения. При включённом fault injection обычный ответ не отправляется — вместо него генерируется ошибка.
| Тип | Поведение | Когда полезно |
|---|---|---|
connection_reset | TCP-соединение сбрасывается (RST) | Тестирование retry-логики, circuit breaker |
empty_response | Пустой ответ, соединение закрывается | Тестирование обработки пустых ответов |
malformed_response | Невалидные HTTP-чанки | Тестирование парсинга ответов |
random_data | Случайные байты, затем закрытие | Тестирование обработки повреждённых данных |
SOAP-заглушки
SOAP-заглушки позволяют мокировать веб-сервисы, работающие по SOAP 1.1 и 1.2. Они также работают через WireMock, но с дополнительными возможностями для XML и XPath.
Основные поля
| Поле | Описание |
|---|---|
Endpoint Path | HTTP-путь, на котором принимаются SOAP-запросы. Пример: /frontend-service/MainService |
SOAPAction | Значение заголовка SOAPAction для фильтрации. Матчит как с кавычками, так и без: "http://example.com/Send" и http://example.com/Send |
SOAP Version | 1.1 — Content-Type: text/xml; 1.2 — Content-Type: application/soap+xml |
WSDL | Если заполнено, автоматически раздаётся по GET endpoint?wsdl |
XPath Body Matchers
Мощный способ фильтрации SOAP-запросов по содержимому XML-тела. Задаётся как JSON-массив:
[
{
"xpath": "//*[local-name()='SendRequestRequest']",
"equals": ""
},
{
"xpath": "//*[local-name()='MessageType']",
"equals": "CREATE"
}
]
Два режима матчинга
- Проверка наличия — только
xpath, безequals: элемент должен существовать - Проверка значения —
xpath+equals: элемент должен существовать и иметь указанное значение
local-name() для игнорирования XML-пространств имён. Например: //*[local-name()='ElementName'] — сработает независимо от namespace.
Если несколько матчеров
Все матчеры в массиве должны совпасть (логика AND). Это позволяет точно выбрать нужный SOAP-метод.
Response Templating в SOAP
Работает так же, как для HTTP. Дополнительно доступен хелпер soapXPath:
<Response>
<MessageId>{{soapXPath request.body '//MessageId/text()'}}</MessageId>
<Timestamp>{{now format='yyyy-MM-dd HH:mm:ss'}}</Timestamp>
<Status>SUCCESS</Status>
</Response>
Kafka-заглушки
Kafka-заглушки реализуют паттерн Request / Reply: приложение слушает входящий топик и автоматически отправляет ответ в указанный выходной топик.
Конфигурация
| Поле | Обязательное | Описание |
|---|---|---|
Request Topic | Да | Топик, из которого читаются входящие сообщения |
Reply Topic | Да | Топик, в который отправляется ответ |
Response Key | Нет | Ключ ответного сообщения. Если не задан — используется ключ входящего сообщения |
Как работает
- При создании заглушки поднимается отдельный Kafka consumer с уникальным group ID
- Consumer слушает указанный
Request Topic - При получении сообщения — отправляет тело ответа заглушки в
Reply Topic - Заголовки из поля
Response Headersдобавляются к ответному сообщению
Artemis-заглушки (JMS)
Заглушки для ActiveMQ Artemis. Слушают JMS-очередь и отправляют ответ в указанную очередь.
Конфигурация
| Поле | Обязательное | Описание |
|---|---|---|
Request Queue | Да | Очередь для входящих сообщений |
Reply Queue | Да | Очередь для ответных сообщений |
Selector | Нет | JMS selector для фильтрации сообщений (SQL-подобный синтаксис) |
Response Key | Нет | Переопределение JMSCorrelationID. По умолчанию — берётся ID входящего сообщения |
JMS Selector
Позволяет фильтровать входящие сообщения по свойствам JMS. Синтаксис аналогичен SQL WHERE:
JMSType = 'PaymentRequest'
priority > 5
country = 'RU' AND amount > 1000
RabbitMQ-заглушки
Заглушки для RabbitMQ. Слушают AMQP-очередь и отправляют ответ в указанную очередь.
Конфигурация
| Поле | Обязательное | Описание |
|---|---|---|
Request Queue | Да | Очередь для входящих сообщений |
Reply Queue | Да | Очередь для ответных сообщений |
Response Key | Нет | Переопределение correlationId. По умолчанию — берётся из входящего сообщения |
Очереди создаются автоматически (durable) при регистрации заглушки.
HTTP Schedule
Отложенные исходящие HTTP-вызовы. Заглушка отправляет HTTP-запрос по расписанию — в указанное время или по cron-выражению. Это не мок, а генератор исходящих запросов.
Типы расписания
Cron — повторяющееся
5-полевой cron: минута час день_месяца месяц день_недели
*/5 * * * * — каждые 5 минут
0 9 * * 1-5 — в 09:00 по будням
0 0 1 * * — первого числа каждого месяца в полночь
30 14 * * * — каждый день в 14:30
Once — однократно
Выполняется один раз в указанное время. Формат: 2026-04-16T14:30:00 или ISO-8601 с timezone.
Delay — с задержкой
Выполняется один раз через указанное количество минут от момента создания.
Конфигурация запроса
| Поле | Описание | По умолчанию |
|---|---|---|
Target URL | URL, на который отправляется запрос | — |
HTTP Method | GET, POST, PUT, PATCH, DELETE | POST |
Content-Type | application/json, text/plain, text/xml, application/x-www-form-urlencoded | application/json |
Response Body и Response Headers используются наоборот: Response Body — это тело отправляемого запроса, а Response Headers — это заголовки отправляемого запроса.
Создание заглушек
Через UI
- Перейдите в
/ui/stubsи нажмите Создать - Выберите протокол — форма автоматически покажет нужные поля
- Заполните обязательные поля (отмечены *)
- Заполните тело ответа — редактор автоматически определит формат (JSON/XML/Text)
- Нажмите Сохранить
Валидация
- Имя — обязательно, до 255 символов
- Тело ответа — обязательно для HTTP, SOAP, Kafka, Artemis, RabbitMQ; необязательно для HTTP Schedule GET
- JSON — если выбран формат JSON, тело проверяется на валидность синтаксиса
- XML — если выбран формат XML, тело проверяется на валидность
- Cron — проверяется формат: 5 полей, допустимые символы
0-9 a-z A-Z * , - /
При выборе другого протокола форма автоматически показывает нужные поля:
Kafka
SOAP
Клонирование
Кнопка Клонировать в деталях заглушки создаёт копию с префиксом «Copy of». Копия создаётся выключенной. Удобно для создания вариаций одного сценария.
Включение / Выключение
Переключатель Enabled позволяет временно отключить заглушку, не удаляя её. Выключенная заглушка снимается с регистрации в WireMock / Kafka / Artemis и перестаёт отвечать на запросы.
Проекты и папки
Проекты
Заглушки можно объединять в проекты. Проект имеет код (уникальный) и имя. Фильтрация по проекту доступна в sidebar списка заглушек.
Папки
Иерархическая организация заглушек через путь-папку. Поддерживается вложенность через /:
payments
payments/auth
payments/auth/login
payments/refunds
orders
orders/v2
В sidebar отображается дерево папок с количеством заглушек в каждой. При клике на папку отображаются все заглушки в ней и её подпапках.
Импорт и экспорт
Экспорт
- Один стаб: в деталях заглушки — кнопка «Экспорт». Скачивает JSON-файл
- Все стабы:
GET /api/stubs/export— скачиваетstubs-export.json - По протоколу:
GET /api/stubs/export?protocol=http— только HTTP-заглушки
Импорт
Отправьте массив заглушек через POST /api/stubs/import:
curl -X POST http://<APP_HOST>:8080/api/stubs/import \
-u <USER>:<PASSWORD> \
-H "Content-Type: application/json" \
-d @stubs-export.json
enabled: false). Включите нужные вручную после проверки.
Формат файла
[
{
"name": "Get User",
"integrationType": "sync",
"protocol": "http",
"config": {
"method": "GET",
"path": "/api/users/1",
"status_code": 200
},
"responseBody": "{\"id\": 1, \"name\": \"John\"}",
"responseHeaders": "{\"Content-Type\": \"application/json\"}",
"enabled": true,
"folder": "users"
}
]
Сценарий: перенос между окружениями
- Экспортируйте заглушки из dev:
GET /api/stubs/export - Импортируйте в staging:
POST /api/stubs/import - Включите нужные заглушки
OpenAPI импорт
Автоматическое создание HTTP-заглушек из OpenAPI 3.x / Swagger 2.0 спецификации.
Как это работает
- Перейдите в
/ui/stubs/import-openapi - Вставьте OpenAPI-спецификацию (JSON или YAML)
- Система распарсит все эндпоинты и покажет превью
- Выберите нужные эндпоинты и нажмите «Создать»
Что извлекается автоматически
- Путь — параметры пути конвертируются в regex
[^/]+ - Метод — GET, POST, PUT, DELETE, PATCH
- Query-параметры — из блока
parametersсin: query - Заголовки — из
parametersсin: header(кроме Accept, Content-Type) - Тело ответа — из
example,examplesили генерация из схемы - Статус-код — выбирается лучший (200 > 201 > первый 2xx)
- Имя заглушки — из
summaryоперации
Метрики и журнал вызовов
Каждая заглушка отслеживает вызовы и показывает метрики в разделе деталей.
Hit Counter
Счётчик количества срабатываний заглушки. Отображается в списке и в деталях. Сбрасывается при перезапуске приложения.
Журнал вызовов (Call Journal)
Детальный лог каждого обращения к заглушке:
- Timestamp — время вызова
- URL / Destination — путь запроса (HTTP/SOAP) или топик/очередь (Kafka/Artemis/Rabbit)
- Заголовки — заголовки входящего запроса
- Тело — тело входящего запроса/сообщения
- HTTP-статус — код ответа (только для HTTP и SOAP)
- Время ответа — задержка в миллисекундах
Графики
В деталях заглушки доступны:
- Traffic Chart — гистограмма запросов за период с наложением средней задержки
- Status Distribution — распределение HTTP-статусов (для HTTP/SOAP)
- Average Response Time — средняя задержка за период
Периоды: 5 мин, 15 мин, 30 мин, 1 час, 6 часов, 24 часа, 7 дней.
Поддержка по протоколам
| Протокол | Hit Counter | Журнал | URL/Dest | HTTP-метод | HTTP-статус |
|---|---|---|---|---|---|
| HTTP | + | + | URL | + | + |
| SOAP | + | + | URL | + | + |
| Kafka | + | + | Topic | — | — |
| Artemis | + | + | Queue | — | — |
| RabbitMQ | + | + | Queue | — | — |
| HTTP Schedule | + | — | — | — | — |
REST API
Все операции доступны через REST API на порту :8080. Авторизация: HTTP Basic Auth.
Endpoints
| Метод | URL | Описание |
|---|---|---|
POST | /api/stubs | Создать заглушку |
GET | /api/stubs | Список заглушек (пагинация + фильтр) |
GET | /api/stubs/{id} | Получить заглушку по ID |
PUT | /api/stubs/{id} | Обновить заглушку |
DELETE | /api/stubs/{id} | Удалить заглушку |
GET | /api/stubs/export | Экспорт всех заглушек |
GET | /api/stubs/{id}/export | Экспорт одной заглушки |
POST | /api/stubs/import | Импорт массива заглушек |
Пагинация и фильтрация
GET /api/stubs?page=0&size=20&protocol=http
Параметры: page (с 0), size (по умолчанию 20), protocol (опционально).
Примеры curl
Создание HTTP-заглушки
curl -X POST http://<APP_HOST>:8080/api/stubs \
-u <USER>:<PASSWORD> \
-H "Content-Type: application/json" \
-d '{
"name": "Get Users",
"integrationType": "sync",
"protocol": "http",
"config": {
"method": "GET",
"path": "/api/users",
"status_code": 200,
"response_templating": false
},
"responseBody": "[{\"id\": 1, \"name\": \"John\"}]",
"responseHeaders": "{\"Content-Type\": \"application/json\"}",
"enabled": true
}'
Создание Kafka-заглушки
curl -X POST http://<APP_HOST>:8080/api/stubs \
-u <USER>:<PASSWORD> \
-H "Content-Type: application/json" \
-d '{
"name": "Payment Reply",
"integrationType": "sync",
"protocol": "kafka",
"config": {
"request_topic": "payment.requests",
"reply_topic": "payment.replies"
},
"responseBody": "{\"status\": \"SUCCESS\", \"txId\": \"TX-001\"}",
"enabled": true
}'
Список с фильтром
curl http://<APP_HOST>:8080/api/stubs?protocol=kafka&page=0&size=10 \
-u <USER>:<PASSWORD>
Конфигуратор развёртывания
Конфигуратор генерирует готовый набор файлов для развёртывания Badgermock под ваш проект. Вы выбираете нужные протоколы и параметры — получаете ZIP-архив со всем необходимым.
Что входит в архив
Состав архива зависит от выбранной среды развёртывания:
| Файл | Docker Compose | Kubernetes | Standalone |
|---|---|---|---|
.env | + | — | — |
docker-compose.yml | + | — | — |
helm/Chart.yaml | — | + | — |
helm/values.yaml | — | + | — |
helm/templates/*.yaml | — | + | — |
badgermock.env | — | — | + |
badgermock.service | — | — | + |
Dockerfile | + | + | + |
README.md | + | + | + |
badgermock.jar | опционально | опционально | опционально |
Как пользоваться
- Выберите протоколы — отметьте только те, которые реально используются на проекте. HTTP включён всегда. Отключённые протоколы не будут приниматься приложением, а в Docker Compose не будут подниматься лишние брокеры.
- Настройте параметры — порт приложения (
8080) и порт WireMock (18080). Эти порты влияют наDockerfile,docker-compose.yml, Ingress и переменнуюAPPLICATION_STUBS_BASE_URL(от неё зависят curl-примеры в UI). - Заполните настройки протоколов — при включении Kafka, Artemis или RabbitMQ появятся дополнительные поля: bootstrap servers, broker URL, security protocol и т.д.
- Выберите среду — Docker Compose, Kubernetes или Standalone (VM).
- Скачайте архив — опционально можно включить
badgermock.jar(~106 MB).
Docker Compose
Генерируется docker-compose.yml с сервисами:
- badgermock — контейнер приложения с
env_file: .env - postgres — PostgreSQL 16 с healthcheck
- kafka + zookeeper — только если выбран Kafka
- artemis — только если выбран Artemis
- rabbitmq — только если выбран RabbitMQ
Запуск: положите badgermock.jar рядом с Dockerfile, соберите образ и запустите:
docker build -t badgermock .
BADGERMOCK_IMAGE=badgermock docker compose up -d
Kubernetes (Helm)
Генерируется полноценный Helm-чарт:
Chart.yaml— метаданныеvalues.yaml— все env-переменные, ресурсы (CPU/RAM), probes, ingresstemplates/deployment.yaml— Deployment с env из values и secretstemplates/service.yaml— Service с двумя портами (приложение + WireMock)templates/ingress.yaml— Ingress с двумя хостами
Ingress: два хоста
Ingress настраивается на два домена:
| Хост | Назначение | Порт |
|---|---|---|
ingress.app.host | UI + REST API | service.port (8080) |
ingress.wiremock.host | HTTP/SOAP заглушки | service.wiremockPort (18080) |
APPLICATION_STUBS_BASE_URL автоматически формируется из ingress.wiremock.host — curl-примеры в UI будут корректными.
Деплой:
# Сборка образа
docker build -t registry.example.com/badgermock:latest .
docker push registry.example.com/badgermock:latest
# Секрет для БД
kubectl create secret generic badgermock-db-secret \
--from-literal=SPRING_DATASOURCE_PASSWORD=<PASSWORD>
# Установка
helm upgrade --install badgermock ./helm/ -f helm/values.yaml
Standalone (VM)
Генерируется пара файлов для запуска через systemd:
badgermock.env— переменные окружения (JDBC URL сlocalhost)badgermock.service— systemd unit сEnvironmentFile
Установка:
cp badgermock.jar /opt/badgermock/
cp badgermock.env /etc/badgermock/
cp badgermock.service /etc/systemd/system/
systemctl daemon-reload
systemctl start badgermock
Переопределение конфигурации
JAR всегда один и тот же — все протоколы включены внутри. Конфигуратор генерирует только внешнюю обвязку (env-файлы, docker-compose, Helm values). Spring Boot применяет приоритеты:
- Переменные окружения — наивысший приоритет (перекрывают всё)
application.ymlрядом с JAR — средний приоритетapplication.ymlвнутри JAR — дефолты
Это значит: вы можете изменить любой параметр после генерации, просто отредактировав .env / values.yaml — без пересборки JAR.
Конфигурация
Feature Flags
Каждый протокол можно включить или выключить. Выключенный протокол не отображается в UI и не принимает запросы на создание заглушек.
| Переменная окружения | Описание | По умолчанию |
|---|---|---|
APPLICATION_FEATURES_HTTP_ENABLED | HTTP-заглушки (WireMock) | true |
APPLICATION_FEATURES_SOAP_ENABLED | SOAP-заглушки | true |
APPLICATION_FEATURES_KAFKA_ENABLED | Kafka-заглушки | true |
APPLICATION_FEATURES_ARTEMIS_ENABLED | Artemis-заглушки | true |
APPLICATION_FEATURES_RABBIT_ENABLED | RabbitMQ-заглушки | false |
APPLICATION_FEATURES_HTTP_SCHEDULE_ENABLED | HTTP Schedule | true |
APPLICATION_FEATURES_HTTP_WIREMOCK_PORT | Порт WireMock-сервера | 18080 |
Таймауты
| Переменная окружения | Описание | По умолчанию |
|---|---|---|
APPLICATION_TIMEOUTS_KAFKA_PRODUCER | Таймаут Kafka producer (секунды) | 10 |
APPLICATION_TIMEOUTS_ARTEMIS_RECOVERY | Интервал восстановления JMS (мс) | 10000 |
APPLICATION_TIMEOUTS_RABBIT_RECOVERY | Интервал восстановления RabbitMQ (мс) | 10000 |
APPLICATION_TIMEOUTS_HTTP_SCHEDULE_CONNECT | Таймаут подключения HTTP Schedule (сек) | 5 |
APPLICATION_TIMEOUTS_HTTP_SCHEDULE_READ | Таймаут чтения HTTP Schedule (сек) | 5 |
Брендинг
Кастомизация внешнего вида UI:
| Переменная окружения | Описание | По умолчанию |
|---|---|---|
APPLICATION_BRANDING_NAME | Название в шапке UI | Badgermock |
APPLICATION_BRANDING_DESCRIPTION | Описание | Сервис интеграционных стабов |
APPLICATION_BRANDING_ICON | Путь к иконке | /images/badger-icon.svg |
Подключения
| Переменная окружения | Описание |
|---|---|
SPRING_DATASOURCE_URL | JDBC URL для PostgreSQL |
SPRING_DATASOURCE_USERNAME | Пользователь БД |
SPRING_DATASOURCE_PASSWORD | Пароль БД |
SPRING_KAFKA_BOOTSTRAP_SERVERS | Kafka bootstrap servers |
SPRING_ARTEMIS_BROKER_URL | URL Artemis брокера |
SPRING_RABBITMQ_HOST | Хост RabbitMQ |
SERVER_PORT | Порт приложения (по умолчанию 8080) |
Безопасность
Аутентификация
- API (
/api/**) — HTTP Basic Auth - UI (
/ui/**) — форма логина с сессией - Actuator (
/actuator/**) — доступен без авторизации
Пользователи
Учётные данные задаются при развёртывании. Для настройки через переменные окружения:
APPLICATION_SECURITY_USER=myuser
APPLICATION_SECURITY_PASSWORD=mypassword
Отключение авторизации
APPLICATION_SECURITY_ENABLED=false
Все эндпоинты становятся доступны без авторизации. Подходит для dev-окружений.
Health Check
curl http://<APP_HOST>:8080/actuator/health
Доступен без авторизации. Используется для liveness/readiness probes в Kubernetes.