Skip to content

Latest commit

 

History

History
48 lines (41 loc) · 3.86 KB

14_README.md

File metadata and controls

48 lines (41 loc) · 3.86 KB

Домашнее задание №14 «Кроликизация Календаря»

Необходимо реализовать "напоминания" о событиях с помощью RabbitMQ (кролика). Общая концепция описана в техническом задании.

Порядок выполнения ДЗ:

  • установить локально очередь сообщений RabbitMQ (или сразу через Docker, если знаете как);
  • создать процесс Планировщик (scheduler), который периодически сканирует основную базу данных, выбирая события о которых нужно напомнить:
    • при запуске процесс должен подключаться к RabbitMQ и создавать все необходимые структуры (топики и пр.) в ней;
    • процесс должен выбирать сообытия для которых следует отправить уведомление (у события есть соотв. поле), создавать для каждого Уведомление (описание сущности см. в ТЗ), сериализовать его (например, в JSON) и складывать в очередь;
    • процесс должен очищать старые (произошедшие более 1 года назад) события.
  • создать процесс Рассыльщик (sender), который читает сообщения из очереди и шлёт уведомления; непосредственно отправку делать не нужно - достаточно логировать сообщения / выводить в STDOUT.
  • настройки подключения к очереди, периодичность запуска и пр. настройки процессов вынести в конфиг проекта;
  • работу с кроликом вынести в отдельный пакет, который будут использовать пакеты, реализующие процессы выше.

Процессы не должны зависеть от конкретной реализации RMQ-клиента.

В результате компиляции проекта (make build) должно получаться 3 отдельных исполняемых файла (по одному на микросервис):

  • API (calendar);
  • Планировщик (calendar_scheduler);
  • Рассыльщик (calendar_sender).

Каждый из сервисов должен принимать путь файлу конфигурации:

./calendar           --config=/path/to/calendar_config.yaml
./calendar_scheduler --config=/path/to/scheduler_config.yaml
./calendar_sender    --config=/path/to/sender_config.yaml

После запуска RabbitMQ и PostgreSQL процессы calendar_scheduler и calendar_sender должны запускаться без дополнительных действий.

Критерии оценки

  • Makefile заполнен и пайплайн зеленый - 1 балл
  • Работа с RMQ выделена в отдельный пакет, код не дублируется - 1 балл
  • Реализован Планировщик:
    • отсылает уведомления о выбранных событиях - 2 балла
    • удаляет старые события - 1 балл
  • Реализован Рассыльщик - 2 балла
  • Можно собрать сервисы одной командой (make build) - 1 балл
  • Понятность и чистота кода - до 2 баллов

Зачёт от 7 баллов