🔄 Redis
Модуль redis обеспечивает надежную интеграцию с Redis Streams для фоновой обработки и событийно-ориентированной архитектуры в фреймворке codex-bot.
🧠 Почему так?
Событийно-ориентированная архитектура (Event-Driven)
В большом боте некоторые действия (например, отправка уведомлений, обработка платежей) должны происходить в фоне, не блокируя основной цикл поллинга Telegram. Redis Streams предоставляют надежный способ развязки этих действий от UI-логики бота.
Надежность (Consumer Groups)
RedisStreamProcessor использует Redis Consumer Groups для гарантии того, что каждое сообщение будет обработано хотя бы один раз. Он поддерживает автоматическое подтверждение (ACK) и планирование повторных попыток (через RetrySchedulerProtocol), делая систему устойчивой к сбоям и сетевым проблемам.
🔄 Поток данных (The Flow)
- Производство: Внешний сервис или другая фича бота добавляет сообщение в Redis Stream (например,
bot_events). - Потребление:
RedisStreamProcessorопрашивает стрим через Consumer Group и читает порцию сообщений. - Диспетчеризация:
BotRedisDispatcherполучает сообщение и находит подходящий хендлер на основе поляtypeв payload. - Исполнение: Хендлер (например,
on_booking_confirmed) вызывается с DI-контейнером проекта. - Подтверждение: Если хендлер успешен, процессор отправляет
XACKв Redis. Если нет — сообщение планируется для повторной попытки.
🗺️ Карта модуля
| Компонент | Описание |
|---|---|
| 📄 API Reference | Технические детали RedisRouter и BotRedisDispatcher. |
| 📄 Stream Processor | Цикл опроса Redis Stream (Consumer Group). |
| 📄 Dispatcher | Диспетчер сообщений Redis Stream для бота. |
| 📄 Protocols | RetrySchedulerProtocol и StreamStorageProtocol. |
Последнее обновление: 2025-02-07