Files
Алина Курбанова 31e6bcd880 kurbanova_alina_lab_4 is ready
2025-11-16 14:06:59 +04:00
..
2025-11-16 14:06:59 +04:00
2025-11-16 14:06:59 +04:00
2025-11-16 14:06:59 +04:00
2025-11-16 14:06:59 +04:00

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

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

Задачи:

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

Предметная область: заказ пиццы.

Как запустить лабораторную работу:

  1. Установить и запустить RabbitMQ.
  2. Установить зависимости Python с помощью команды pip install pika.
  3. Запустить в 3-х разных терминалах: Терминал 1 - python publisher.py (Издатель) Терминал 2 - python consumer_1.py (Медленный обработчик) Терминал 3 - python consumer_2.py (Быстрый обработчик)
  4. Остановка работы - Ctrl+C.

Что она делает

Данное приложение реализует систему обработки заказов пиццы с использованием асинхронной архитектуры на основе RabbitMQ. Система состоит из трех основных компонентов: издателя (Publisher) и двух типов потребителей (Consumer). Издатель каждую секунду генерирует новые заказы пиццы с различными параметрами, такими как тип пиццы, имя клиента и статус заказа, и публикует эти события в exchange типа fanout. Exchange типа fanout обеспечивает доставку каждого сообщения во все привязанные к нему очереди одновременно.

Первый потребитель (Consumer 1) создает собственную именованную очередь и обрабатывает сообщения с задержкой 2-3 секунды, имитируя медленный процесс обработки заказа. Второй потребитель (Consumer 2) также создает свою очередь с другим именем, но обрабатывает сообщения мгновенно, демонстрируя быструю обработку. Оба потребителя используют механизм подтверждения обработки сообщений, что гарантирует надежную доставку.

Какие технологии использовали:

Python + pika библиотека RabbitMQ - брокер сообщений AMQP протокол Fanout Exchange - рассылка всем очередям Message Queues - асинхронная обработка Publisher-Subscriber паттерн Работает на localhost, порт по умолчанию 5672.

Пример работы:

alt text

alt text

Вывод о скорости обработки consumer-ами событий от publisher-а:

RabbitMQ автоматически распределяет сообщения между всеми Consumer'ами одной очереди. Добавление большего количества Consumer'ов позволяет обрабатывать сообщения быстрее. При достаточном количестве Consumer'ов очередь перестает расти.

Ссылка на видео: https://vkvideo.ru/video-233171473_456239021