POS BFF — Events

POS BFF — только консьюмер Kafka. Никогда не публикует. Все события, которые он получает, форвардит в SSE-канал POS Desktop (см. SSE stream).

Потребляет

Kafka TopicConsumer GroupSSE eventЧто делает POS
catalog.product.upsertedpos-bff-sse-${HOSTNAME}menu.invalidatemenuStore.checkForUpdates()
catalog.product.deletedpos-bff-sse-${HOSTNAME}menu.invalidatemenuStore.checkForUpdates()
catalog.category.upsertedpos-bff-sse-${HOSTNAME}menu.invalidatemenuStore.checkForUpdates()
catalog.category.deletedpos-bff-sse-${HOSTNAME}menu.invalidatemenuStore.checkForUpdates()
catalog.modifier_group.upsertedpos-bff-sse-${HOSTNAME}menu.invalidatemenuStore.checkForUpdates()
catalog.modifier_group.deletedpos-bff-sse-${HOSTNAME}menu.invalidatemenuStore.checkForUpdates()
catalog.stoplist.updatedpos-bff-sse-${HOSTNAME}menu.invalidatemenuStore.checkForUpdates()
store.table.upsertedpos-bff-sse-${HOSTNAME}table.invalidatetablesStore.reload()
aggregator.order.receivedpos-bff-sse-${HOSTNAME}aggregator.invalidateaggregatorStore.reload()
marketing.slide.changed (BR 6.1)pos-bff-sse-${HOSTNAME}marketing.invalidateНа /standby — reload активных слайдов через GET /pos/api/v1/marketing/active

Per-pod Consumer Group

Каждый под (replica) pos-bff имеет уникальный suffix ${HOSTNAME} в group-id, чтобы все реплики получали все события. Иначе SSE-клиенты, подключённые к под-A, не увидели бы события, обработанные под-B.

Routing по store_id

Pos-bff фильтрует входящие события по payload.store_id и рассылает SSE только клиентам этой ТТ (broadcastToStore(store_id, ...)). Это критично — кассы разных ТТ не должны получать «чужие» обновления.

Debouncing

Для menu.* событий — debounce 300ms на batch-апдейт каталога (при массовом импорте товаров pos-bff не шлёт 1000 SSE-событий, а одно после паузы).

Для marketing.slide.changed — debounce не применяется (изменения редкие, важна моментальность).

Heartbeat

Каждые 30 секунд pos-bff шлёт : ping\n\n в SSE-канал — страхует от idle-kill промежуточных прокси (Nginx, CloudFlare).

Публикует

Не публикует ни в один Kafka топик. POS BFF — потребительский слой.

Ссылки