DAS_2024_1/zhimolostnova_anna_lab_4/README.md
2024-10-09 17:12:11 +03:00

5.7 KiB
Raw Blame History

Отчет по лабораторной работе №4

Поставленные задачи

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

Предметная область

Уведомление о штрафах за нарушение ПДД.

Запуск работы

  1. Убедиться, что установлены необходимые технологии:

    • Docker: Платформа для контейнеризации приложений.
    • RabbitMQ: Брокер сообщений.
    • Docker Compose: Инструмент для запуска многоконтейнерных приложений на основе docker-compose.yaml. Обычно поставляется вместе с Docker. Чтобы проверить, установлена ли утилита, нужно запустить команду:
        docker-compose --version
    
  2. В директории, где находится файл docker-compose.yaml, выполнить следующую команду для запуска всех сервисов:

        docker-compose up --build
    

    Эта команда сначала выполнит сборку, а затем запустит контейнеры.

  3. После успешного запуска можно перейти на RabbitMQ Management UI:

Технологии

  1. Golang: основной язык программирования.
  2. Docker & Docker Compose: для контейнеризации сервисов и удобного развертывания.
  3. RabbitMQ: брокер сообщений.

Анализ полученных данных

SlowQueueResult.png Для замедленной очереди можно сделать следующие выводы:

  • Все 366 сообщений доставлены потребителям, но они еще не подтверждены. Поскольку "Ready" равен нулю, это означает, что все сообщения сразу передаются потребителям, и ни одно сообщение не ожидает очереди.
  • Однако, поскольку все 366 сообщений находятся в состоянии "Unacked", это указывает на то, что потребитель не подтверждает обработку сообщений вовремя, что связано с медленной обработкой (как предполагает название очереди slow_consumer_queue).
  • Публикация сообщений идет с постоянной скоростью 1 сообщение в секунду, и с той же скоростью сообщения доставляются потребителю.
  • Однако скорость подтверждения (Consumer ack) составляет лишь 0.60 сообщений в секунду, что означает, что потребитель обрабатывает и подтверждает сообщения медленнее, чем они поступают. Это вызывает накопление неподтвержденных сообщений в очереди (Unacked), и со временем их число может продолжать расти, если скорость обработки не увеличится.

FastQueueResult.png Для быстрой очереди можно сделать следующие выводы:

  • Очередь пуста. Т.е. нет сообщений, которые ожидают обработки или находятся в процессе обработки. Это означает, что потребитель обрабатывает сообщения сразу после их получения, и сообщения не накапливаются в очереди.
  • Сообщения публикуются и доставляются потребителю со скоростью 1 сообщение в секунду, и потребитель подтверждает обработку каждого сообщения также со скоростью 1 сообщение в секунду.
  • Поскольку скорость подтверждения и доставки совпадают, сообщений не накапливается, и все обрабатывается своевременно.

Ход работы

  1. Прохождение первого урока: директория FirstTutorial FirstTutorial.png

  2. Прохождение второго урока: директория SecondTutorial SecondTutorial.png

  3. Прохождение третьего урока и выполнение задания на ЛР №3: директория ThirdTutorial ThirdTutorial.png

В коде присутствуют пояснительные комментарии.

Демонстрационное видео

Видеозапись доступна по адресу: https://vk.com/video193898050_456240872