Skip to content

bytesworm/java-ecommerce

Repository files navigation

E-Commerce Microservices (Java + Spring Boot + Kafka)

Микросервисный проект, демонстрирующий гибридную архитектуру:
синхронное взаимодействие сервисов через REST и асинхронные уведомления через Kafka.


Архитектура

Architecture

Сервис Назначение Порт
Order Service Управление заказами. Синхронно взаимодействует с Inventory и Payment, публикует события в Kafka. 8082
Inventory Service Проверка и резервирование товаров. 8081
Payment Service Обработка оплаты. Возвращает результат в Order Service. 8083
Notification Service Асинхронно получает события заказов из Kafka и отправляет уведомления. 8086
Kafka Шина событий для Notification Service. 9094
Nginx Gateway Прокси для всех REST API и Swagger UI. 8000
Swagger UI Единая точка документации API. 8090

Технологии

  • Java 21, Spring Boot 3.5.6
  • Spring Web, JPA, Lombok, Mapstruct
  • Spring Kafka
  • PostgreSQL (для каждого сервиса своя БД)
  • Docker Compose, Nginx, Swagger UI

Логика работы

  1. Создание товаров
    Пользователь или администратор добавляет новые позиции через Inventory Service.
    Все товары сохраняются в базе Inventory DB.

  2. Создание заказа
    Клиент оформляет заказ через Order Service.
    Сервис синхронно обращается к Inventory Service, чтобы:

    • проверить наличие товаров;
    • зарезервировать нужное количество.
      После успешной проверки создаётся заказ со статусом CREATED и временем истечения (TTL).
  3. Оплата заказа
    Клиент оплачивает заказ.
    Order Service вызывает Payment Service, который возвращает результат оплаты.
    Если оплата прошла успешно:

    • заказ получает статус COMPLETED;
    • зарезервированные товары списываются из Inventory Service;
    • публикуется событие OrderEvent в Kafka.
  4. Асинхронное уведомление
    Notification Service подписан на топик order-events.
    После получения события формирует и отправляет уведомление пользователю (например, в Telegram).

  5. Автоматическая отмена неоплаченных заказов
    Если заказ не был оплачен вовремя — встроенный шедулер в Order Service:

    • отменяет заказ;
    • снимает резервирование товаров в Inventory Service;

Порты и маршруты

Путь Назначение
/order-api/** Order Service
/inventory-api/** Inventory Service
/payment-api/** Payment Service
/notification-api/** Notification Service
/swagger/ Swagger UI

Swagger доступен по адресу:
👉 http://localhost:8000/swagger/


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

docker compose up --build

About

E-Commerce Microservices (Java + Spring Boot + Kafka)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published