Описание проекта
diplom-group25 - это учебный проект на Spring Boot, состоит из 9 микросервисов, представляет собой социальную сеть.
Мною реализовано 4 микросервиса, один из них - microservice-streaming.
Ссылка на стенд: http://130.61.44.151/login
Презентация проекта: https://www.youtube.com/watch?v=wHGmJVBqXho
microservice-streaming отвечает за следующий функционал:
- работа с входящими сообщениями диалога (получение сообщения от frontend-service через WebSocketSession, пересылка полученного сообщения в microservice-dialog с помощью Apache Kafka)
- работа с исходящими сообщениями диалога (получение уведомления о полученном сообщении от microservice-dialog с помощью Apache Kafka, перенаправление сообщения во frontend-service через WebSocketSession для трансляции сообщения пользователю, при условии, что он - онлайн, и у него открыт активный диалог)
- работа с нотификациями о сообщениях/публикациях/комментариях/днях рождения/заявках в друзья (отправка нотификации, полученной от соответствующего сервиса, во frontend-service через WebSocketSession для трансляции пользователю)
- работа со статусом пользователя онлайн/офлайн (меняется при создании/завершении WebSocketSession)
Сервис упакован в докер-контейнер.
docker push skillgroup25/microservice-streaming
Порт сервиса: 8080
Spring Security на Jwt-токенах (передается в headers)
В проекте используется обычный WebSocket (без STOMP) с использованием TextWebSocketHandler, аутентификация клиента происходит через Cookie (подключен дополнительный фильтр в Security, он "вытаскивает" jwt-токен из Cookie и "перекладывает" его в headers)
В проекте также используется Lombok
для упрощения процесса разработки и снижения количества кода.
Обработка входящий сообщений Apache Kafka
реализована в асинхронном режиме с помощью ThreadPoolTaskExecutor