Skip to content

fr2eof/AirBooking

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

No releases published

Packages

 
 
 

Contributors