10.5 Топики — рассылка по кластеру
Топик — распределённый broadcast с хранением во встроенном хранилище.
@retain(ORDER_EVENTS_RETENTION)
topic OrderEvents: OrderEvent sharded by .userId
emit OrderEvents(e) // публикация
for await e in OrderEvents.subscribe(key: uid, from: .Latest) { … }
for await e in OrderEvents.subscribe(group: "indexer") { index(e) }emit T(x)илиT.publish(x)публикует элемент. Внутриatomic(db)публикация выполняется через outbox (§11.2).- Broadcast-семантика: каждый подписчик без
groupполучает каждый элемент. Подписчики с одинаковымgroupделят элементы: каждый элемент получает ровно один член группы (очередь). sharded by .поле— ключ партиционирования; порядок гарантирован внутри ключа. Без ключа — один раздел, общий порядок.- Начало чтения
from:.Latest,.Earliest,.Offset(n),.Since(time). Подписка на топик всегда возобновляемая. - Доставка — at-least-once. Хранение —
@retain(d)или@retain(count: n), по умолчаниюTOPIC_RETENTIONкластера. - Тип элемента ДОЛЖЕН быть
Serializable. Для топика ДОЛЖНА существовать роль сjournal(§12.1).
Связанные диагностики
См. также
Исходник: docs/spec/oxl-standard.md