Skip to content

Spring Boot microservices project MariaDB / Kafka / WebSockets

Notifications You must be signed in to change notification settings

alex90bar/microservices-MariaDB

Repository files navigation

Microservices-MariaDB

Описание проекта

Microservices-MariaDB - это учебный проект на Spring Boot, состоит из 3 микросервисов. Они обмениваются между собой сообщениями через Apache Kafka, WebSockets и FeignClient.
Схема взаимодействия:
MC1 - microservice-mariadb. Он создает сообщение в формате JSON следующего формата:

{
            "id" : 1,
     "session_id": 1,
  "MC1_timestamp": "datetime",
  "MC1_timestamp": "datetime",
  "MC1_timestamp": "datetime",
  "end_timestamp": "datetime"
}

MC1 записывает в поле MC1_timestamp текущее время и отправляет сообщение в MC2 через WebSockets/StompCLient.
MC2 принимает сообщение и записывает в поле MC2_timestamp текущее время, отправляет сообщение в MC3 через Apache Kafka.
MC3 принимает сообщение, записывает в поле MC3_timestamp текущее время, отправляет сообщение в MC1 через FeignClient запросом POST.


MC1 принимает сообщение, записывает в поле end_timestamp текущее время и сохраняет сообщение в БД MariaBD.
Далее цикл повторяется в течение заданного временного интервала (по умолчанию 10 секунд).


Начало взаимодействия микросервисов выводится на консоль в MC1.
Завершение взаимодействия выводится на консоль в MC1 с указанием следующих параметров:

  1. время взаимодействия;
  2. количество сообщений, сгенерированных во время взаимодействия.

Сервисы упакованы в докер-контейнеры.
Докер-хаб: https://hub.docker.com/r/alex90bar/microservices/tags

Скрипты для запуска сервисов и БД:

docker-compose up -d

Для запуска сервисов, БД и окружения необходим docker-compose.yaml, он находится в корневой папке репозитория. Перед запуском его необходимо поместить в папку, из которой выполняется команда терминалом.
Время взаимодействия можно задать через переменную TIME_SEC в файле docker-compose.yaml в сервисе MC1.


Маппинг сущностей выполняется через MapStruct.
В проекте также используется Lombok для упрощения процесса разработки и снижения количества кода.


Порт MC1: 8082.
Порт MC2: 8085.
Порт MC3: 8088.

Список эндпоинтов:

Endpoint Description Mapping
http://localhost:8082/start Запуск обмена сообщениями GET
http://localhost:8082/stop Досрочная остановка взаимодействия GET
http://localhost:8082/messages Получить список всех записанных сообщений из БД GET

About

Spring Boot microservices project MariaDB / Kafka / WebSockets

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published