Перейти к содержанию

Redis

Stream: stream.notifications.jobs

NotificationPublisher.publish() → Redis XADD → stream.notifications.jobsnotifications-service (XREADGROUP).

Payload поля:

Поле Тип Описание
userId int Получатель уведомления
channel string payments / security / kyc / system
title string Заголовок push-уведомления
body string Текст уведомления
traceId string? intent_id или иной trace
data object? Дополнительные данные для deep link
badge int? Badge counter для iOS

Формат записи в stream: { "payload": "<JSON-строка>" }.

Конфиг из passwords.yaml

Ключ Формат Назначение
notificationsRedisUrl redis://:password@host:port/db URL Redis с авторизацией и номером базы

Инициализация в server.dart: если notificationsRedisUrl не задан или не начинается с redis:// — публикация отключается (логируется verbose). NotificationsRedisClient.isInitialized возвращает false.

Best-effort

Сбой публикации в Redis (XADD error) не откатывает основную операцию (платёж, KYC, регистрацию). Ошибки логируются через session.log на уровне warning. Потеря push-уведомления не является критической ошибкой.

[PLAN] Redis Pub/Sub — Phase 2B

В Phase 2B планируется добавить Redis Pub/Sub (intent.{id}) для streamStatus() в PaymentEndpoint. Auth Center будет подписываться на канал и стримить статусы intent клиенту через Serverpod streams, вместо polling PM.