> Как передать данные от одного сервиса к множеству читателей с брокером сообщений (Go)
Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы
Компании: Wildberries
Стек: Go
> Пример ответа
Для передачи данных от одного сервиса к множеству читателей с брокером сообщений в Go используется паттерн pub/sub (publish/subscribe). Брокер (например, RabbitMQ, NATS, Kafka) принимает сообщение от продюсера и доставляет его всем подписанным консюмерам.
Пример на Go с использованием NATS (популярный легковесный брокер):
GOpackage mainimport ("log""github.com/nats-io/nats.go")func main() {// Подключение к NATSnc, _ := nats.Connect(nats.DefaultURL)defer nc.Close()// Продюсер: отправка сообщения всем подписчикам на тему "orders"nc.Publish("orders", []byte("Новый заказ #123"))// Консюмер 1: подписка на темуnc.Subscribe("orders", func(m *nats.Msg) {log.Printf("Сервис A получил: %s", string(m.Data))})// Консюмер 2: другая подписка на ту же темуnc.Subscribe("orders", func(m *nats.Msg) {log.Printf("Сервис B получил: %s", string(m.Data))})// Блокировка для ожидания сообщенийselect {}}
Ключевые моменты:
- Используется topic (тема) для группировки сообщений.
- Каждый подписчик получает копию сообщения (fan-out).
- Для гарантии доставки при сбоях используйте durable subscriptions (NATS) или очереди с подтверждением (RabbitMQ).
- Для масштабирования можно использовать группы консюмеров (queue groups в NATS или competing consumers в RabbitMQ), но это уже распределение нагрузки, а не вещание.
Альтернативы: RabbitMQ с exchange типа fanout, Kafka с consumer groups (каждый читает все сообщения из партиции).
> Похожие задачи по Go
Насколько знаком с Kubernetes на уровне пользователя
Что такое consumer group в брокерах сообщений
Что происходит при передаче данных между сервисами с брокером сообщений если сервис недоступен
Как называется операция переноса данных из нескольких таблиц в одну для оптимизации запросов
> Похожие задачи по backend
Насколько знаком с Kubernetes на уровне пользователя
Что такое consumer group в брокерах сообщений
Что происходит при передаче данных между сервисами с брокером сообщений если сервис недоступен
Как называется операция переноса данных из нескольких таблиц в одну для оптимизации запросов
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью