Лабораторная работа №4 - Работа с брокером сообщений
Цель: изучение проектирования приложений при помощи брокера сообщений.
Задачи:
- Установить брокер сообщений RabbitMQ.
- Пройти уроки 1, 2 и 3 из RabbitMQ Tutorials на любом языке программирования.
- Продемонстрировать работу брокера сообщений.
Предметная область: заказ пиццы.
Как запустить лабораторную работу:
- Установить и запустить RabbitMQ.
- Установить зависимости Python с помощью команды pip install pika.
- Запустить в 3-х разных терминалах: Терминал 1 - python publisher.py (Издатель) Терминал 2 - python consumer_1.py (Медленный обработчик) Терминал 3 - python consumer_2.py (Быстрый обработчик)
- Остановка работы - 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.
Пример работы:
Вывод о скорости обработки consumer-ами событий от publisher-а:
RabbitMQ автоматически распределяет сообщения между всеми Consumer'ами одной очереди. Добавление большего количества Consumer'ов позволяет обрабатывать сообщения быстрее. При достаточном количестве Consumer'ов очередь перестает расти.
Ссылка на видео: https://vkvideo.ru/video-233171473_456239021

