Skip to content

🔄 Redis

⬅️ Back | 🏠 Docs Root

Модуль redis обеспечивает надежную интеграцию с Redis Streams для фоновой обработки и событийно-ориентированной архитектуры в фреймворке codex-bot.


🧠 Почему так?

Событийно-ориентированная архитектура (Event-Driven)

В большом боте некоторые действия (например, отправка уведомлений, обработка платежей) должны происходить в фоне, не блокируя основной цикл поллинга Telegram. Redis Streams предоставляют надежный способ развязки этих действий от UI-логики бота.

Надежность (Consumer Groups)

RedisStreamProcessor использует Redis Consumer Groups для гарантии того, что каждое сообщение будет обработано хотя бы один раз. Он поддерживает автоматическое подтверждение (ACK) и планирование повторных попыток (через RetrySchedulerProtocol), делая систему устойчивой к сбоям и сетевым проблемам.


🔄 Поток данных (The Flow)

  1. Производство: Внешний сервис или другая фича бота добавляет сообщение в Redis Stream (например, bot_events).
  2. Потребление: RedisStreamProcessor опрашивает стрим через Consumer Group и читает порцию сообщений.
  3. Диспетчеризация: BotRedisDispatcher получает сообщение и находит подходящий хендлер на основе поля type в payload.
  4. Исполнение: Хендлер (например, on_booking_confirmed) вызывается с DI-контейнером проекта.
  5. Подтверждение: Если хендлер успешен, процессор отправляет XACK в Redis. Если нет — сообщение планируется для повторной попытки.

🗺️ Карта модуля

Компонент Описание
📄 API Reference Технические детали RedisRouter и BotRedisDispatcher.
📄 Stream Processor Цикл опроса Redis Stream (Consumer Group).
📄 Dispatcher Диспетчер сообщений Redis Stream для бота.
📄 Protocols RetrySchedulerProtocol и StreamStorageProtocol.

Последнее обновление: 2025-02-07