.. | ||
FirstTutorial | ||
ReportImages | ||
SecondTutorial | ||
ThirdTutorial | ||
docker-compose.yml | ||
README.md |
Отчет по лабораторной работе №4
Поставленные задачи
- Установить брокер сообщений RabbitMQ.
- Пройти уроки 1, 2 и 3 из RabbitMQ Tutorials на любом языке программирования.
- Продемонстрировать работу брокера сообщений.
Предметная область
Уведомление о штрафах за нарушение ПДД.
Запуск работы
-
Убедиться, что установлены необходимые технологии:
- Docker: Платформа для контейнеризации приложений.
- RabbitMQ: Брокер сообщений.
- Docker Compose: Инструмент для запуска многоконтейнерных приложений на основе
docker-compose.yaml
. Обычно поставляется вместе с Docker. Чтобы проверить, установлена ли утилита, нужно запустить команду:
docker-compose --version
-
В директории, где находится файл
docker-compose.yaml
, выполнить следующую команду для запуска всех сервисов:docker-compose up --build
Эта команда сначала выполнит сборку, а затем запустит контейнеры.
-
После успешного запуска можно перейти на RabbitMQ Management UI:
- RabbitMQ Management UI: http://localhost:15672/#/.
Технологии
- Golang: основной язык программирования.
- Docker & Docker Compose: для контейнеризации сервисов и удобного развертывания.
- RabbitMQ: брокер сообщений.
Анализ полученных данных
Для замедленной очереди можно сделать следующие выводы:
- Все 366 сообщений доставлены потребителям, но они еще не подтверждены. Поскольку "Ready" равен нулю, это означает, что все сообщения сразу передаются потребителям, и ни одно сообщение не ожидает очереди.
- Однако, поскольку все 366 сообщений находятся в состоянии "Unacked", это указывает на то, что потребитель не подтверждает обработку сообщений вовремя, что связано с медленной обработкой (как предполагает название очереди slow_consumer_queue).
- Публикация сообщений идет с постоянной скоростью 1 сообщение в секунду, и с той же скоростью сообщения доставляются потребителю.
- Однако скорость подтверждения (Consumer ack) составляет лишь 0.60 сообщений в секунду, что означает, что потребитель обрабатывает и подтверждает сообщения медленнее, чем они поступают. Это вызывает накопление неподтвержденных сообщений в очереди (Unacked), и со временем их число может продолжать расти, если скорость обработки не увеличится.
Для быстрой очереди можно сделать следующие выводы:
- Очередь пуста. Т.е. нет сообщений, которые ожидают обработки или находятся в процессе обработки. Это означает, что потребитель обрабатывает сообщения сразу после их получения, и сообщения не накапливаются в очереди.
- Сообщения публикуются и доставляются потребителю со скоростью 1 сообщение в секунду, и потребитель подтверждает обработку каждого сообщения также со скоростью 1 сообщение в секунду.
- Поскольку скорость подтверждения и доставки совпадают, сообщений не накапливается, и все обрабатывается своевременно.
Ход работы
В коде присутствуют пояснительные комментарии.
Демонстрационное видео
Видеозапись доступна по адресу: https://vk.com/video193898050_456240872