49 lines
2.9 KiB
Markdown
49 lines
2.9 KiB
Markdown
|
# Лабораторная работа №4
|
|||
|
|
|||
|
## Описание
|
|||
|
Задание 1 из туториала: ![task1.jpg](results/task1.jpg)
|
|||
|
Задание 2 из туториала: ![task2.jpg](results/task2.jpg)
|
|||
|
Задание 3 из туториала: ![task3.jpg](results/task3.jpg)
|
|||
|
|
|||
|
Также были созданы файлы Consumer1, Consumer2 и Publisher для обработки событий в сфере онлайн-магазина
|
|||
|
|
|||
|
Publisher:
|
|||
|
|
|||
|
• Создает обменник типа fanout с именем online_store_events.
|
|||
|
|
|||
|
• Каждую секунду генерирует сообщения в формате JSON, описывающие различные события в магазине.
|
|||
|
|
|||
|
• Отправляет сообщения в обменник.
|
|||
|
|
|||
|
Consumer 1:
|
|||
|
|
|||
|
• Создает очередь с именем order_processing_queue.
|
|||
|
|
|||
|
• Создает привязку к обменнику online_store_events.
|
|||
|
|
|||
|
• Принимает сообщения из очереди.
|
|||
|
|
|||
|
• Обрабатывает сообщения, симулируя обработку заказа (использует time.sleep(2)).
|
|||
|
|
|||
|
• Выводит в консоль информацию о полученном сообщении.
|
|||
|
|
|||
|
Consumer 2:
|
|||
|
|
|||
|
• Создает очередь с именем product_recommendation_queue.
|
|||
|
|
|||
|
• Создает привязку к обменнику online_store_events.
|
|||
|
|
|||
|
• Принимает сообщения из очереди.
|
|||
|
|
|||
|
• Обрабатывает сообщения мгновенно, симулируя создание рекомендаций (использует print(f"Обработка рекомендации: {message}")).
|
|||
|
|
|||
|
• Выводит в консоль информацию о полученном сообщении.
|
|||
|
|
|||
|
## Вывод работы
|
|||
|
Для того, чтобы сделать вывод, необходимо подождать некоторое время, тогда можно будет увидеть, что количество сообщений в order_processing_queue будет больше,
|
|||
|
чем в product_recommendation_queue, так как во второй очереди происходит мгновенная обработка сообщений.
|
|||
|
Если запустить несколько Consumer-1, то количество сообщений в order_processing_queue снизится, так как несколько экземпляров первого consumer будут работать параллельно, и RabbitMQ будет распределять входящие сообщения между ними (это называется "разделение нагрузки").
|
|||
|
![Consumer-1.jpg](results/Consumer-1.jpg)
|
|||
|
![Consumer-3.jpg](results/Consumer-3.jpg)
|
|||
|
## Видео
|
|||
|
Работоспособность представлена на [видео](https://vk.com/video204968285_456240928).
|