Files
dc-observatio/services/pcp-route-processing-service
Дмитрий Соловьев b5990a55ac добавить масштабируемый outbox worker для паспортов маршрутов
- добавить properties и config values для route passport outbox worker
- включить Spring scheduling в route-processing service
- добавить транзакционный сервис claim и status transitions для outbox
- публиковать claimed outbox rows через существующий Kafka publisher
- обрабатывать publish failures по каждой row с bounded exponential backoff
- обеспечить безопасность при нескольких pod через FOR UPDATE SKIP LOCKED и lockedUntil
- добавить unit tests для claim, publish transitions, retry/fail behavior и batch-обработки worker
2026-05-25 15:05:04 +03:00
..
2026-05-25 14:23:52 +03:00
2026-05-25 14:23:52 +03:00
2026-05-25 14:23:52 +03:00

route-passport-kafka-consumer

Минимальный сервис на Kotlin + Spring Boot, который:

  • слушает Kafka topic;
  • получает в сообщении JSON паспорта маршрута;
  • парсит JSON в DTO;
  • больше ничего не делает.

Что внутри

  • RoutePassportConsumerApplication — точка входа Spring Boot.
  • RoutePassportMessageListener — Kafka listener.
  • RoutePassportJsonParserService — сервис парсинга входного JSON в DTO.
  • RoutePassportDto — итоговый DTO из pcp-types-lib.
  • RawPassportEnvelopeDto и связанные Raw* DTO — модель входного JSON из pcp-types-lib.

Как запустить

  1. Поднять Kafka.
  2. Указать адрес брокера в application.yml или через переменную окружения KAFKA_BOOTSTRAP_SERVERS.
  3. При необходимости указать topic через APP_KAFKA_TOPIC.
  4. Запустить приложение:
./gradlew bootRun

Сообщение, которое ожидает сервис

Сервис ожидает, что value Kafka-сообщения — это JSON того же формата, что и src/test/resources/passport_example.json. Поле geometry должно приходить строкой в формате WKT.

Примечание

Поскольку в запросе был указан просто «слушает очередь», реализация сделана через Kafka topic как наиболее типичный вариант для стека Kotlin + Spring и Kafka-ориентированного сервиса.