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

  1. Pri prijímaní inzerátu vygenerujeme jedinečný kľúč (napríklad UUID alebo hash).
  2. Pokúsime sa vložiť záznam s týmto kľúčom do databázy s obmedzením na jedinečnosť.
  3. Ak je vloženie úspešné, inzerát je nový a spracuje sa.
  4. 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.