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