.. | ||
results | ||
tasks | ||
Consumer1.py | ||
Consumer2.py | ||
Publisher.py | ||
readme.md |
Лабораторная работа №4
Описание
Задание 1 из туториала: Задание 2 из туториала: Задание 3 из туториала:
Также были созданы файлы 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 будет распределять входящие сообщения между ними (это называется "разделение нагрузки").
Видео
Работоспособность представлена на видео.