46 lines
2.3 KiB
Markdown
46 lines
2.3 KiB
Markdown
# Лабораторная работа №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 "")
|