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

50 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Лабораторная работа №4 - Работа с брокером сообщений
**Цель**: изучение проектирования приложений при помощи брокера сообщений.
**Задачи**:
1. Установить брокер сообщений RabbitMQ.
2. Пройти уроки 1, 2 и 3 из [RabbitMQ Tutorials](https://www.rabbitmq.com/getstarted.html) на любом языке программирования.
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](pizza_order/image_2.png)
![alt text](pizza_order/image.png)
**Вывод о скорости обработки _consumer_-ами событий от _publisher_-а**:
RabbitMQ автоматически распределяет сообщения между всеми Consumer'ами одной очереди. Добавление большего количества Consumer'ов позволяет обрабатывать сообщения быстрее. При достаточном количестве Consumer'ов очередь перестает расти.
**Ссылка на видео**:
https://vkvideo.ru/video-233171473_456239021