Skip to content

Repository files navigation

AirBooking

CI

Сервис для управления бронированием авиаперелётов.

Основной стек

Java Spring Boot PostgreSQL Kafka Liquibase Testcontainers Redis Micrometer Grafana

Описание

Проект реализует один из микросервисов backend-системы для создания и управления бронированиями авиабилетов. Поддерживает асинхронную обработку событий через Kafka и хранение данных в PostgreSQL

Архитектура основана на подходе event-driven и outbox pattern для надёжной доставки событий

Остальные микры:

Основные возможности

  • Создание и управление бронированиями
  • Публикация событий в Kafka
  • Outbox pattern для гарантированной доставки событий
  • Асинхронная обработка сообщений
  • Интеграционные тесты с Testcontainers

Архитектурные особенности

  • Outbox pattern для надёжной доставки событий в Kafka
  • Асинхронная обработка событий
  • Event-Driven architecture
  • SAGA (Choreography)
  • DLQ (Dead Letter Queue)

Планы развития

  • Микросервис цен на бронирования

SAGA

  1. BookingService
    -> создаёт booking (PENDING)
    -> публикует booking.created

  2. PaymentService
    <- получает booking.created
    -> пытается провести оплату

  3. PaymentService
    -> если успех -> payment.completed
    -> если ошибка -> payment.failed

  4. BookingService
    <- получает payment.completed / payment.failed
    -> меняет статус booking

Запуск проекта

  1. Поднять инфраструктуру:
docker-compose up -d
  1. Запустить приложение:
./mvnw spring-boot:run

Конфигурация

Основные настройки задаются в application.yml:

  • Kafka bootstrap servers
  • Database connection
  • Liquibase migrations
  • Spring profiles

Тестирование

Запуск тестов:

./mvnw test

Используются интеграционные тесты с Testcontainers (Kafka, PostgreSQL)

About

Backend-сервис для управления авиабронированиями с поддержкой Kafka, PostgreSQL и event-driven архитектуры (Outbox pattern)

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages