Создаем первое приложение 💻#
Поздравляем, вы настроили FastStream и RabbitMQ! 🎉 Теперь пора создать первое приложение, которое будет принимать текстовые сообщения из очереди и обрабатывать их. В этом разделе мы напишем простой код, разберем, как он работает, и настроим обработку сообщений. А еще мы объясним, как правильно использовать декораторы broker.subscriber
. Готовы начать кодить? Погнали! 🚀
Что мы сделаем? 📋#
Мы создадим приложение, которое:
- Слушает очередь
input-queue
в RabbitMQ 📥. - Принимает текстовое сообщение, преобразует его в верхний регистр 🔠.
- Логирует результат обработки.
Это базовый пример, который покажет, как FastStream упрощает работу с брокерами сообщений. Публикация сообщений будет рассмотрена в разделе Взаимодействие между сервисами.
Шаг 1: Написание кода ✍️#
Создайте файл app.py
в папке faststream-tutorial
и добавьте следующий код:
Что здесь происходит? 🤔
RabbitBroker
: Объект для подключения к RabbitMQ. Мы указываем адресamqp://guest:guest@localhost:5672/
(логин, пароль и порт по умолчанию).FastStream
: Основное приложение, которое управляет брокером.@broker.subscriber("input-queue")
: Декоратор, реализованный как метод брокера, который регистрирует функциюhandle_message
как подписчика на очередьinput-queue
. Он указывает, что функция будет обрабатывать входящие сообщения.handle_message
: Функция-обработчик, которая принимает строку, логирует её и выводит обработанную версию (в верхнем регистре).
Шаг 2: Запуск приложения ▶️#
Убедитесь, что RabbitMQ запущен (см. Установка и настройка). Если вы используете Docker, проверьте, что контейнер работает:
Запустите приложение FastStream:
Вы увидите вывод:
INFO - FastStream app starting...
INFO - input-queue | - `handle_message` waiting for messages
INFO - FastStream app started successfully! To exit press CTRL+C
Это означает, что приложение слушает очередь input-queue
и готово обрабатывать сообщения! 🎉
Шаг 3: Практическое задание 📚#
Попробуйте закрепить знания:
- Измените функцию
handle_message
, чтобы она логировала другой префикс, например,Ответ:
вместоОбработано:
. - Добавьте в
handle_message
логирование длины входного сообщения (len(msg)
) и проверьте результат. - Убедитесь, что RabbitMQ запущен, и попробуйте отправить сообщение в
input-queue
через веб-интерфейс RabbitMQ (http://localhost:15672
). Проверьте логи приложения.
Что дальше? 🗺️#
Вы создали и запустили своё первое приложение с FastStream! 🎉 Теперь вы знаете, как использовать декоратор broker.subscriber
для обработки сообщений. В следующем разделе мы узнаем, как настроить взаимодействие между сервисами, чтобы публиковать и обрабатывать результаты в других очередях. Перейдите к Взаимодействие между сервисами, чтобы освоить этот процесс.
Если у вас есть идеи, вопросы или нужна помощь, загляните в официальную документацию FastStream, пишите в Telegram или Discord. Продолжайте творить! 🚀