Photo Studio Service — Events
Kafka не используется в MVP
Photo Studio Service не подключён к Kafka-брокеру. Все взаимодействия — синхронные REST-вызовы. Асинхронная обработка заданий реализована через Redis очередь (pub/sub) внутри сервиса.
Обоснование отсутствия Kafka в MVP
- Изолированный домен — нет downstream-сервисов, которым нужны события от Photo Studio в MVP
- Redis достаточно — очередь заданий воркера и SSE-уведомления реализованы через Redis pub/sub без Kafka
- Технический стек — сервис на Go, подключение Kafka потребует дополнительного Java-совместимого подхода или Go-клиента (franz-go), что увеличивает scope интеграции
- Прототип уже работает — добавление Kafka в работающий сервис — отдельная задача, не блокирующая интеграцию с Auth Service
Будущие события (Phase 2+)
При необходимости интеграции с другими сервисами (например, Catalog Service для загрузки фото в карточку товара) могут быть добавлены:
| Event | Topic | Когда публиковать | Кому нужно |
|---|---|---|---|
gensvc.job.created | gensvc.job.created | При создании нового задания | Аналитика, аудит |
gensvc.job.succeeded | gensvc.job.succeeded | Задание завершено успешно | Catalog Service (для привязки фото к товару) |
gensvc.job.failed | gensvc.job.failed | Задание завершено с ошибкой | Мониторинг/алерты |
gensvc.preset.created | gensvc.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:queue | Redis List (LPUSH/BRPOP) | Очередь ID заданий для воркера |
gensvc:job:stream:{job_id} | Redis Pub/Sub | SSE-трансляция статуса конкретного задания клиентам |
Kafka в будущем
Подключение Kafka потребует отдельного BR с оценкой: какие downstream-потребители нужны и что быстрее — прямые REST internal APIs или события.