Middle+
Jak jsi nakonfiguroval idempotenci, aby nedocházelo k opakovaným inzerátům?
sobes.tech AI
Odpověď od AI
Idempotence v kontextu zpracování inzerátů je obvykle dosaženo unikátní identifikací každého inzerátu a kontrolou jeho existence před zpracováním. V jazyce Go lze toto implementovat například pomocí databáze s unikátním indexem na pole, které identifikuje inzerát (například ID nebo hash obsahu).
Příklad přístupu:
- Při přijetí inzerátu vygenerujeme unikátní klíč (například UUID nebo hash).
- Pokusíme se vložit záznam s tímto klíčem do databáze s omezením unikátnosti.
- Pokud je vložení úspěšné, inzerát je nový a zpracovává se.
- Pokud dojde k chybě unikátnosti, znamená to, že inzerát již byl zpracován, a ignorujeme ho.
Příklad kódu v Go s použitím databáze:
func processAd(ad Ad) error {
// ad.ID — unikátní identifikátor inzerátu
err := db.InsertAd(ad)
if err != nil {
if isUniqueViolation(err) {
// Inzerát již byl zpracován
return nil
}
return err
}
// Zpracování inzerátu
return handleAd(ad)
}
Také lze použít caching (například Redis) s nastavením klíče na určitou dobu, aby se rychle odmítly opakované požadavky.