DAS_2024_1/kosheev_maksim_lab_4/README.md

90 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Лабораторная работа №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)