Я прохожу курс Apache Kafka for Event-Driven Spring Boot Microservices на платформе Udemy.com.
Моя цель - познакомиться с Apache Kafka поближе. Думаю, что может пригодиться по работе, так как на соседних проектах используется. Да и на собеседованиях часто спрашивают.
В разделах 1-5 (занятия №1-33) были рассмотрены теоретические аспекты брокера сообщений (иногда его ещё называют распределённым журналом сообщений) Apache Kafka. Также проводилась практическая работа с Kafka CLI (интерфейсом командной строки).
Разумеется, от этих уроков никаких записей кода не осталось 😉
В разделах 6-14 (занятия №34-101) был с нуля создан небольшой проект с микросервисной архитектурой (четыре микросервиса).
Модуль products-microservice
- это реализация продюсера (producer). Сервис принимает информацию о продукте (например,
iPhone 15) в формате JSON, обрабатывает, и отбрасывает информацию в брокер для дальнейшей обработки.
Модуль email-notification-microservice
- это реализация консьюмера (consumer). Сервис принимает новое сообщение от
брокера, немного обрабатывает и выводит в консоль.
Модуль core
- по сути, просто хранилище класса, объект которого мы обрабатываем, то есть отправляем из продюсера и принимаем
в консьюмере.
Модуль mockservice
был предоставлен преподавателем в готовом виде. Предназначен для проверки обработки исключений при
работе приложения. В зависимости от запроса, возвращает ResponseEntity со статусом либо 200, либо 500.
В следующих разделах (я ещё не знаю, сколько их будет) преподаватель предоставил уже готовые микросервисы. Я их немного подправила под свой code style + добавила Lombok.
Модуль transfer-service
- это реализация продюсера, который работает с двумя топиками: withdraw-money-topic
и
deposit-money-topic
.
Модули withdrawal-service
и deposit-service
- это реализации консьюмеров. Каждый из них получает и обрабатывает
сообщения от соответствующего топика. Идея преподавателя в том, чтобы оформить передачу сообщений в оба консьюмера
в рамках одной транзакции. То есть, сообщения должны быть переданы либо оба, либо ни одно из них.
Модуль core
- это хранилище двух классов, объекты которых мы отправляем из продюсера и принимаем в консьюмерах. Также
содержит объекты классов-исключений, повторяемого и неповторяемого.
Модуль mockservice
- это всё тот же сервис-заглушка для проверки обработки исключений. В зависимости от запроса,
возвращает ResponseEntity со статусом либо 200, либо 500.