DAS_2023_1/labs/lab_4.md
2023-11-30 18:14:28 +04:00

3.7 KiB
Raw Permalink 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). Программа должна обрабатывать сообщения 2-3 секунды. Можно реализовать через обычный Thread.Sleep (для C#).
  3. Consumer 2. Аналогично Consumer 1, только сообщения необходимо обрабатывать моментально. Только имя очереди должно отличаться от Consumer 1.

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

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

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

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

Как в предыдущих лабораторных.

P.S. Задание взято из репозитория Моисеева В.В.