Skip to content

Я прохожу курс "Apache Kafka for Event-Driven Spring Boot Microservices" на платформе Udemy.com

Notifications You must be signed in to change notification settings

AlesiaSherstneva/event-driven-dev-with-kafka

Repository files navigation

event-driven-development-with-kafka

Я прохожу курс Apache Kafka for Event-Driven Spring Boot Microservices на платформе Udemy.com.

Моя цель - познакомиться с Apache Kafka поближе. Думаю, что может пригодиться по работе, так как на соседних проектах используется. Да и на собеседованиях часто спрашивают.


В разделах 1-5 (занятия №1-33) были рассмотрены теоретические аспекты брокера сообщений (иногда его ещё называют распределённым журналом сообщений) Apache Kafka. Также проводилась практическая работа с Kafka CLI (интерфейсом командной строки).

Разумеется, от этих уроков никаких записей кода не осталось 😉


В разделах 6-14 (занятия №34-101) был с нуля создан небольшой проект с микросервисной архитектурой (четыре микросервиса). Также в разделах 17-18 (занятия №128-144) были написаны интеграционные тесты для двух модулей, проверяющие работу Apache Kafka.

Модуль products-microservice - это реализация продюсера (producer). Сервис принимает информацию о продукте (например, iPhone 15) в формате JSON, обрабатывает, и отбрасывает информацию в брокер для дальнейшей обработки.

Модуль email-notification-microservice - это реализация консьюмера (consumer). Сервис принимает новое сообщение от брокера, немного обрабатывает и выводит в консоль.

Модуль core - по сути, просто хранилище класса, объект которого мы обрабатываем, то есть отправляем из продюсера и принимаем в консьюмере.

Модуль mockservice был предоставлен преподавателем в готовом виде. Предназначен для проверки обработки исключений при работе приложения. В зависимости от запроса, возвращает ResponseEntity со статусом либо 200, либо 500.


В разделах 15-16 (занятия №102-127) преподаватель предоставил уже готовые микросервисы. Я их немного подправила под свой code style + добавила Lombok.

Модуль transfer-service - это реализация продюсера, который работает с двумя топиками: withdraw-money-topic и deposit-money-topic.

Модули withdrawal-service и deposit-service - это реализации консьюмеров. Каждый из них получает и обрабатывает сообщения от соответствующего топика. Идея преподавателя в том, чтобы оформить передачу сообщений в оба консьюмера в рамках одной транзакции. То есть, сообщения должны быть переданы либо оба, либо ни одно из них.

Модуль core - это хранилище двух классов, объекты которых мы отправляем из продюсера и принимаем в консьюмерах. Также содержит объекты классов-исключений, повторяемого и неповторяемого.

Модуль mockservice - это всё тот же сервис-заглушка для проверки обработки исключений. В зависимости от запроса, возвращает ResponseEntity со статусом либо 200, либо 500.


Раздел 19, помеченный как аппендикс А 🙂, содержит подробную инструкцию по запуску Kafka-кластера с тремя брокерами в Docker-контейнере с помощью файла docker-compose.yml. Ох, и как же я пожалела, что не прошла эти уроки ранее, до начала работы с микросервисами! 🙁 Ведь всё это время я каждый раз запускала такой Kafka-кластер с командной строки! 😵‍💫

About

Я прохожу курс "Apache Kafka for Event-Driven Spring Boot Microservices" на платформе Udemy.com

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages