distributed-computing/labs/lab_4/README.md
2023-11-20 00:10:30 +04:00

4.1 KiB
Raw Blame History

Лабораторная работа №4 - Работа с брокером сообщений

Цель: изучение проектирования приложений при помощи брокера сообщений.

Задачи:

  1. Установить брокер сообщений RabbitMQ.
  2. Пройти уроки 1, 2 и 3 из RabbitMQ Tutorials на любом языке программирования.
  3. Продемонстрировать работу брокера сообщений.

Установка брокера сообщений RabbitMQ.

Можно не использовать Docker и использовать локальный ПК.

Страница скачивания RabbitMQ с офф. сайта.

Страница релизов RabbitMQ, где есть бинарные установщики для всех современных платформ.

Прохождение tutorial

Достаточно для каждого урока скриншота, где виден запуск одновременно producer и consumer, а также видно, что сообщения передаются.

Разработка демонстрационных приложений

См. 3 главу tutorial.

Необходимо выбрать предметную область и разработать следующие приложения:

  1. Publisher. Программа, которая создаёт один exchange с типом fanout. Программа должна раз в секунду генерировать сообщения в журнал событий согласно вашей предметной области. Например, событие "пришёл заказ" или "сообщение от пользователя" или "необходимо создать отчёт".
  2. Consumer 1. Программа, которая создаёт под себя отдельную неанонимную (!) очередь (queue) (то есть имя queue НЕ пустая строка), создаёт binding на exchange и начинает принимать сообщения (consume). Программа должна обрабатывать сообщения, например, 3 секунды. Можно реализовать через обычный Thread.Sleep (для C#).
  3. Consumer 2. Аналогично Consumer 1, только сообщения необходимо обрабатывать моментально. Только имя очереди должно отличаться от Consumer 1.

Далее необходимо собрать и запустить приложения одновременно по одному экземпляру.

Сделать в отчёте вывод о скорости обработки consumer-ами событий от publisher-а. Для этого можно посмотреть заполненность созданных очередей. А для этого можно использовать скриншот из RabbitMQ Management UI.

Запустить несколько копий Consumer 1. Проверить заново заполненность очередей через UI.

Правила оформления pull request

Код и отчёт со скриншотами необходимо положить в папку tasks/фамилия-инициалы/lab_4.

Не забудьте о файле .gitignore, чтобы не закоммтить ничего лишнего. Для C#-проектов это, например, папки bin и obj.

Правила именования ветки: фамилия-инициалы-lab-номер, например, moiseev-vv-lab-4.

Название pull request: [Л/Р 4] ФАМИЛИЯ ИМЯ, например, [Л/Р 4] Моисеев Владислав.