Photo Studio Service — Events

Kafka не используется в MVP

Photo Studio Service не подключён к Kafka-брокеру. Все взаимодействия — синхронные REST-вызовы. Асинхронная обработка заданий реализована через Redis очередь (pub/sub) внутри сервиса.

Обоснование отсутствия Kafka в MVP

  1. Изолированный домен — нет downstream-сервисов, которым нужны события от Photo Studio в MVP
  2. Redis достаточно — очередь заданий воркера и SSE-уведомления реализованы через Redis pub/sub без Kafka
  3. Технический стек — сервис на Go, подключение Kafka потребует дополнительного Java-совместимого подхода или Go-клиента (franz-go), что увеличивает scope интеграции
  4. Прототип уже работает — добавление Kafka в работающий сервис — отдельная задача, не блокирующая интеграцию с Auth Service

Будущие события (Phase 2+)

При необходимости интеграции с другими сервисами (например, Catalog Service для загрузки фото в карточку товара) могут быть добавлены:

EventTopicКогда публиковатьКому нужно
gensvc.job.createdgensvc.job.createdПри создании нового заданияАналитика, аудит
gensvc.job.succeededgensvc.job.succeededЗадание завершено успешноCatalog Service (для привязки фото к товару)
gensvc.job.failedgensvc.job.failedЗадание завершено с ошибкойМониторинг/алерты
gensvc.preset.createdgensvc.preset.createdСоздан новый системный пресетCDN инвалидация

Примерный payload для gensvc.job.succeeded

{
  "event_id": "uuid",
  "timestamp": "2026-05-07T10:00:00Z",
  "version": "1",
  "payload": {
    "job_id": "job_01HXYZ...",
    "kind": "photo-studio",
    "user_id": "emp_01HF...",
    "franchise_id": "frn_01HF...",
    "output_asset_id": "ast_01HXYZ...",
    "job_outputs": ["ast_01HXYZ...", "ast_01HABC..."]
  }
}

Потребляет

Photo Studio Service не потребляет внешних Kafka-событий.

Внутренняя очередь (Redis)

Задания обрабатываются воркером через Redis:

Channel/KeyТипОписание
gensvc:jobs:queueRedis List (LPUSH/BRPOP)Очередь ID заданий для воркера
gensvc:job:stream:{job_id}Redis Pub/SubSSE-трансляция статуса конкретного задания клиентам

Kafka в будущем

Подключение Kafka потребует отдельного BR с оценкой: какие downstream-потребители нужны и что быстрее — прямые REST internal APIs или события.

Ссылки