Files
2025-10-12 20:08:55 +04:00
..
2025-10-12 20:08:55 +04:00
2025-10-12 20:08:55 +04:00
2025-10-12 20:08:55 +04:00
2025-10-12 20:08:55 +04:00
2025-10-12 20:08:55 +04:00
2025-10-12 20:08:55 +04:00
2025-10-12 20:08:55 +04:00
2025-10-12 20:08:55 +04:00

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

Цель

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

Задачи

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

Инструменты для выполнения:

  1. Docker
  2. Docker Compose
  3. Python
  4. RabbitMQ
  5. RabbitMQ Management (http://localhost:15672/#/)

Скриншоты прохождения туториалов:

1.png
2.png
3.png

Описание программы:

  1. Publisher.py генерирует случайные сообщения
  2. Consumer_1.py обрабатывает сообщения с задержкой ( time.sleep(random.choice([2, 3])))
  3. Consumer_2.py обрабатывает сообщения мгновенно

Запуск очереди с Consumer_2:

queue2.png

Текущая нагрузка

  • Сообщения в очереди: 0 (Ready + Unacked = 0)
  • Скорость публикации: 1.0 сообщений/секунду
  • Скорость обработки: 2.0 сообщений/секунду

Вывод

Очередь не успевает заполняться, так как скорость обработки вдвое превышает скорость поступления сообщений.

Запуск очереди с Consumer_1:

1consumer.png

Текущая нагрузка

  • В очереди находится 23 сообщения
  • Все сообщения находятся в статусе "Unacked" (неподтвержденные)

Вывод

Очередь быстро заполняется при одном медленном обработчике

Запуск очереди с двумя Consumer_1:

2consumer.png

Текущая нагрузка

  • В очереди 9 сообщений
  • Скорость публикации (1.0/с) незначительно превышает скорость обработки (0.80/с)

Вывод

Скорость обработки увеличивается с добавлением второго обработчика

Запуск очереди с тремя Consumer_1:

3consumer.png

Текущая нагрузка

  • Скорость обработки (2.0/с) почти сравнялась со скоростью публикации (2.2/с)
  • Очередь стабилизировалась на минимальном уровне (0-4 сообщения)
  • Система достигла баланса между поступлением и обработкой сообщений

Вывод

Три обработчика справляются с нагрузкой - очередь перестает расти

Запуск:

  1. На компьютере должны быть установлены Docker, Docker Compose и RabbitMQ
  2. Скачайте папку с репозитория
  3. Запустите с помощью команды: docker-compose up --build
  4. Перейдите по адресу: http://localhost:15672/#/
  5. С помощью команд python Consumer_1.py python Consumer_2.py python Publisher.py запустите процессы

Что делает данная лабораторная работа:

Архитектура системы включает три сервиса: один для отправки сообщений в очереди, и два для их обработки — в реальном времени и с задержкой

Предметная область - очереди в магазине

Видео:

https://rutube.ru/video/private/b45b3ec63d4677a0d72da7e40b1117e9/?p=6VettjoKmfUPKeKh38NBQQ