# Лабораторная работа №4 - Работа с брокером сообщений
**Цель**: изучение проектирования приложений при помощи брокера сообщений.

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

![](images/pulling.jpg "")

Указываем имя для контейнера и проброс необходимых портов:

![](images/run.jpg "")

### Работа брокера
#### Publisher
Программа, которая создаёт один exchange с типом fanout. Программа должна раз в секунду генерировать сообщения в журнал событий согласно вашей предметной области. Например, событие "пришёл заказ" или "сообщение от пользователя" или "необходимо создать отчёт".

Отправляет пользователям сообщения о том, что необходимо начать тренировку:

![](images/publisher.jpg "")

#### Consumer1 - с обработкой

Consumer 1. Программа, которая создаёт под себя отдельную не анонимную (!) очередь (queue) (то есть имя queue НЕ пустая строка), создаёт binding на exchange и начинает принимать сообщения (consume). Программа должна обрабатывать сообщения 2-3 секунды.

![](images/consumer1.jpg "")

#### Consumer2 - без обработки

Consumer 2. Аналогично Consumer 1, только сообщения необходимо обрабатывать моментально. Только имя очереди должно отличаться от Consumer 1.

![](images/consumer2.jpg "")

### Отчеты

![](images/overview.jpg "")

![](images/queue1.jpg "")

![](images/queue2.jpg "")