> Как отправляются события об изменении статусов? (Go)
Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы
Компании: InDrive
Стек: Go
> Пример ответа
В Go для отправки событий об изменении статусов чаще всего используются каналы (channels) или брокеры сообщений (например, NATS, RabbitMQ, Kafka). В простых случаях, когда статус меняется в рамках одного процесса, создается канал с типом события, например:
GOtype StatusEvent struct {EntityID stringOldStatus stringNewStatus stringTimestamp time.Time}statusChan := make(chan StatusEvent, 100)
При изменении статуса в бизнес-логике событие отправляется в канал:
GOfunc updateStatus(entityID, newStatus string) {oldStatus := getCurrentStatus(entityID)// ... логика обновления ...statusChan <- StatusEvent{EntityID: entityID,OldStatus: oldStatus,NewStatus: newStatus,Timestamp: time.Now(),}}
Отдельная горутина-слушатель обрабатывает события (логирование, уведомления, триггеры). Для распределенных систем используется брокер: продюсер публикует сообщение в топик (например, "status.changes"), а консюмеры подписываются и обрабатывают. В Go для этого применяются клиентские библиотеки (sarama для Kafka, nats.go для NATS). Важно учитывать идемпотентность обработки и гарантии доставки (at-least-once или exactly-once).
> Похожие задачи по Go
Какие гарантии доставки сообщений предоставляет Google Pub/Sub?
Какой механизм используется для отправки событий?
Как хранится история переходов статусов платежей?
Вы используете один кластер или геораспределенную систему?
> Похожие задачи по backend
Какие гарантии доставки сообщений предоставляет Google Pub/Sub?
Какой механизм используется для отправки событий?
Как хранится история переходов статусов платежей?
Вы используете один кластер или геораспределенную систему?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью