Middle+
Ako si nastavil idempotenciu, aby sa neopakovali inzeráty?
sobes.tech AI
Odpoveď od AI
Idempotencia v kontexte spracovania inzerátov sa zvyčajne dosahuje pomocou jedinečnej identifikácie každého inzerátu a kontroly jeho existencie pred spracovaním. V jazyku Go je to možné implementovať napríklad pomocou databázy s unikátnym indexom na pole, ktoré identifikuje inzerát (napríklad ID alebo hash obsahu).
Príklad prístupu:
- Pri prijímaní inzerátu vygenerujeme jedinečný kľúč (napríklad UUID alebo hash).
- Pokúsime sa vložiť záznam s týmto kľúčom do databázy s obmedzením na jedinečnosť.
- Ak je vloženie úspešné, inzerát je nový a spracuje sa.
- Ak dôjde k chybe o porušení jedinečnosti, znamená to, že inzerát už bol spracovaný a ignorujeme ho.
Príklad kódu v Go s použitím databázy:
func processAd(ad Ad) error {
// ad.ID — jedinečný identifikátor inzerátu
err := db.InsertAd(ad)
if err != nil {
if isUniqueViolation(err) {
// Inzerát už bol spracovaný
return nil
}
return err
}
// Spracovanie inzerátu
return handleAd(ad)
}
Tiež je možné použiť caching (napríklad Redis) s nastavením kľúča na určitý čas, aby sa rýchlo odmietli opakované požiadavky.