Лабораторная работа №4 - Работа с брокером сообщений
Цель
изучение проектирования приложений при помощи брокера сообщений.
Задачи
- Установить брокер сообщений RabbitMQ.
- Пройти уроки 1, 2 и 3 из RabbitMQ Tutorials на любом языке программирования (я на питоне).
- Продемонстрировать работу брокера сообщений.
Инструменты для выполнения:
- Docker
- Docker Compose
- Python
- RabbitMQ
- RabbitMQ Management (http://localhost:15672/#/)
Скриншоты прохождения туториалов:
Описание программы:
- Publisher.py генерирует случайные сообщения
- Consumer_1.py обрабатывает сообщения с задержкой ( time.sleep(random.choice([2, 3])))
- Consumer_2.py обрабатывает сообщения мгновенно
Запуск очереди с Consumer_2:
Текущая нагрузка
- Сообщения в очереди: 0 (Ready + Unacked = 0)
- Скорость публикации: 1.0 сообщений/секунду
- Скорость обработки: 2.0 сообщений/секунду
Вывод
Очередь не успевает заполняться, так как скорость обработки вдвое превышает скорость поступления сообщений.
Запуск очереди с Consumer_1:
Текущая нагрузка
- В очереди находится 23 сообщения
- Все сообщения находятся в статусе "Unacked" (неподтвержденные)
Вывод
Очередь быстро заполняется при одном медленном обработчике
Запуск очереди с двумя Consumer_1:
Текущая нагрузка
- В очереди 9 сообщений
- Скорость публикации (1.0/с) незначительно превышает скорость обработки (0.80/с)
Вывод
Скорость обработки увеличивается с добавлением второго обработчика
Запуск очереди с тремя Consumer_1:
Текущая нагрузка
- Скорость обработки (2.0/с) почти сравнялась со скоростью публикации (2.2/с)
- Очередь стабилизировалась на минимальном уровне (0-4 сообщения)
- Система достигла баланса между поступлением и обработкой сообщений
Вывод
Три обработчика справляются с нагрузкой - очередь перестает расти
Запуск:
- На компьютере должны быть установлены Docker, Docker Compose и RabbitMQ
- Скачайте папку с репозитория
- Запустите с помощью команды:
docker-compose up --build - Перейдите по адресу: http://localhost:15672/#/
- С помощью команд
python Consumer_1.pypython Consumer_2.pypython Publisher.pyзапустите процессы
Что делает данная лабораторная работа:
Архитектура системы включает три сервиса: один для отправки сообщений в очереди, и два для их обработки — в реальном времени и с задержкой
Предметная область - очереди в магазине
Видео:
https://rutube.ru/video/private/b45b3ec63d4677a0d72da7e40b1117e9/?p=6VettjoKmfUPKeKh38NBQQ






