Sobes.tech
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:

  1. Při přijetí inzerátu vygenerujeme unikátní klíč (například UUID nebo hash).
  2. Pokusíme se vložit záznam s tímto klíčem do databáze s omezením unikátnosti.
  3. Pokud je vložení úspěšné, inzerát je nový a zpracovává se.
  4. 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.