Микросервисная система управления пользователями и уведомлениями на Spring Boot, Kafka, Eureka, Docker и PostgreSQL.
User Service — микросервис на Spring Boot для управления пользователями (CRUD) и публикации событий о создании/удалении пользователей в Kafka.
Notification-service — микросервис, который слушает события из Kafka и отправляет email-уведомления пользователям. Также предоставляет API для отправки email.
Gateway API — микросервис, реализующий единый точку входа в систему (API Gateway на Spring Cloud Gateway). Маршрутизирует HTTP-запросы к нужным микросервисам.
Discovery Server — сервис регистрации и обнаружения (на базе Spring Cloud Eureka). Хранит реестр всех активных сервисов в системе, обеспечивает автоматическую маршрутизацию и отказоустойчивость.
Config Server — централизованный сервер конфигурации (Spring Cloud Config). Управляет конфигурационными файлами для всех микросервисов из единого репозитория.
Kafka — брокер сообщений (Apache Kafka), обеспечивает надёжную асинхронную передачу событий между сервисами.
Mailhog — сервис для перехвата и просмотра тестовых email-сообщений через web-интерфейс. Используется для локальной отладки отправки писем.
PostgreSQL — реляционная база данных для хранения информации о пользователях и событиях (используется user-service).
- Java 22
- Spring Boot (Spring Web, Spring Data JPA, Spring Kafka)
- PostgreSQL (через Docker)
- Apache Kafka (через Docker)
- Spring Cloud (Gateway, Eureka Discovery, Config Server)
- PostgreSQL (через Docker Compose)
- JUnit 5, MockMvc (тестирование)
- JLombok, SLF4J, Logback, Checkstyle
- Docker (для контейнеризации сервисов)
git clone https://github.com/ТВОЙ_ЛОГИН/user-service-spring-Apache-Kafka.git
cd user-service-spring-Apache Kafkadocker compose up -dmvn clean install
mvn checkstyle:checkmvn testmvn verifymvn clean packagedocker compose up -dВсе сервисы (user-service, notification-service, gateway, discovery-server, config-server, kafka, postgres, mailhog) будут подняты как отдельные контейнеры.
docker compose psdocker compose downДля обновления jar-файлов после изменения кода пересоберите сервисы и перезапустите соответствующие контейнеры:
mvn clean package -DskipTests
docker compose up --build -d

