Back to questions
Senior
4
Если одно и то же событие прилетает дважды (дубликат), что делаете?
Companies where asked
А7
Answer from AI
sobes.tech AI
При обработке дублирующихся событий важно обеспечить идемпотентность — чтобы повторная обработка не приводила к ошибкам или некорректным состояниям.
Подходы:
- Хранить уникальный идентификатор события (event ID) и проверять, было ли оно уже обработано.
- Использовать базы данных или кэш (например, Redis) для хранения обработанных ID с TTL.
- В логике обработки игнорировать события с уже встречавшимися ID.
Пример на Go:
var processedEvents = make(map[string]bool)
func handleEvent(eventID string) {
if processedEvents[eventID] {
fmt.Println("Дубликат события, пропускаем")
return
}
// Обработка события
processedEvents[eventID] = true
fmt.Println("Обрабатываем событие", eventID)
}
В реальном приложении лучше использовать потокобезопасные структуры и внешнее хранилище для устойчивости к сбоям.