# Лабораторная работа №4 - Работа с брокером сообщений ## Задание * Установить брокер сообщений RabbitMQ. * Пройти уроки 1, 2 и 3 из RabbitMQ Tutorials, используя Python. * Продемонстрировать работу брокера сообщений. ## Работа программы Программа демонстрирует работу с брокером сообщений RabbitMQ, включая следующие этапы: 1. **Урок 1: Hello World** - Программа демонстрирует базовый обмен сообщениями между продюсером и потребителем через очередь. 2. **Урок 2: Work Queues** - Реализована система, где сообщения из одной очереди обрабатываются несколькими потребителями. - Обеспечивается балансировка нагрузки между потребителями. 3. **Урок 3: Publish/Subscribe** - Используется exchange типа `fanout` для широковещательной рассылки сообщений. - Сообщения из одного источника доставляются сразу нескольким потребителям. ### Описание классов - **`emit_log.py`**: - Отправляет сообщения в exchange `logs`. - Использует тип exchange `fanout` для широковещательной передачи сообщений. - **`receive_logs.py`**: - Получает и обрабатывает сообщения, отправленные через exchange `logs`. - Каждое подключение создаёт временную очередь для получения сообщений. ### Работа приложения 1. **Логгирование**: - Программа записывает логи в файл, используя один из потребителей. 2. **Отображение сообщений на экране**: - Сообщения выводятся в терминале через другого потребителя. ## Примеры использования ### Запуск продюсера ```bash python emit_log.py "Ваше сообщение" ``` ### Запуск потребителя Для отображения сообщений в терминале: ```bash python receive_logs.py ``` Для записи сообщений в файл: ```bash python receive_logs.py > logs_from_rabbit.log ``` ### Уроки #### Lesson 1: "Hello World" ![](result.jpg ) #### Lesson 2: "Work Queues" ![](result2.jpg ) #### Lesson 3: "Publish/Subscribe" ![](result3.jpg) ## Как установить RabbitMQ ```bash docker run -d --hostname rabbitmq --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management ``` ## Видео демонстрации Демонстрацию работы программы можно посмотреть по ссылке: [Ссылка на видео](https://disk.yandex.ru/i/bNA65J1D-7Kk6w)