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 "")
|