Как реализовать pub/sub на каналах?

Middle
214 просмотров
AFK Offer AI

Publisher хранит map[string][]chan Event — подписчики по топикам. Subscribe: создаёт канал, добавляет в map. Publish: итерирует подписчиков топика, отправляет в каждый канал (через select с default чтобы не блокироваться на медленных). Unsubscribe: удаляет канал из map, закрывает его. Всё защищаешь sync.RWMutex. Для production — лучше NATS или Redis pub/sub, каналы хороши для in-process. Проблемы самописного: медленный подписчик блокирует или теряет сообщения.

Следующий вопрос

Как добавить request tracing?