Задание
|
Предыдущий урок
Видеоурок
|
2 из 3 уроков
Необходимо выполнить задание
|
Следующий урок
Оценка качества проверки ДЗ
|
Время выполнения задания: ~2 часа
Сложность: ⭐️⭐️⭐️⭐️⭐️ (максимум ⭐️⭐️⭐️⭐️⭐️)
Бонусы: 500
На вашем счету сейчас: 1 бонуса/ов
Общая схема
На рисунке показана общая схема системы.
💎 Запустить инфраструктуру
Для того чтобы сервис работал, ему нужна база данных и прочие зависимости. Все эти зависимости запускаются в Docker и находятся в проекте Infrastructure.
Подтяните последнюю версию Infrastructure
- Если вы ранее не скачивали проект, то:
git clone https://gitlab.com/microarch-ru/ddd-in-practice/infrastructure.git
- А если скачивали, то просто обновите:
git pull https://gitlab.com/microarch-ru/ddd-in-practice/infrastructure.git
- Откройте терминал и перейдите в папку Infrastructure
- Выполните команду
docker-compose up
- Если ваш компьютер маломощный, то вы можете запускать инфраструктурные системы выборочно. Оставьте в команде, только нужные системы:
docker-compose up postgres kafka init-kafka kowl geo notification discount backoffice basket
❗ Важно
В 10 модуле мы использовали https://github.com/confluentinc/confluent-kafka-go, но это не нативная библиотека для Go — это обёртка над C-клиентом. Это усложняет сборку, требует дополнительных зависимостей и может вызывать проблемы в продакшене. В этом модуле было принято решение перейти на https://github.com/IBM/sarama — это чисто Go-реализация Kafka-клиента, стабильная, кроссплатформенная и проще в использовании.
В домашнем задании вы можете использовать любой клиент, на ваше усмотрение.
💎 Подготовка к заданию
Установите в проект следующие пакеты:
go get github.com/IBM/sarama go get github.com/mehdihadeli/go-mediatr
Задание
Легенда
Вы отвечаете за разработку микросервиса Delivery (доставка)
Подготовка
- Вы работаете в своём Git репозитории "delivery"
- Создайте ветку module-11
- Выполните задание в ней
Задача
Сервис Notification имитирует отправку нотификаций пользователю. По факту он выводит их просто в консоль. Сервис Notification слушает топик Kafka и принимает только сообщения, которые соответствуют его контракту.
Необходимо, чтобы сервис Delivery отправлял сообщение в Kafka, каждый раз при завершении заказа:
- Отправлять нужно в топик - "order.status.changed"
- Сообщение должно соответствоать контракту
После реализации
- Убедитесь, что у вас есть хотя бы 1 завершенный заказ.
- Перейдите в утилиту "Kowl" и убедитесь, что сообщение есть в топике "order.status.changed"
- Откройте терминал в папке проекта Infrastructure и выполните команду и"docker compose logs notification". Убедитесь, что вы видите нотификации.
- Реализован Domain Event
- Реализован Domain Event Handler
- Реализован Kafka Producer
- Domain Event Handler взаимодействует с Adapter только через порт
- Топик order.status.changed содержит сообщения о завершении заказа
По любым вопросам обращайтесь в комментариях к уроку или в Telegram
Если вы обнаружили ошибку или неточность в данном уроке, сообщите о ней в комментариях к данному уроку. Это поможет сделать курс лучше.