Názory k článku Použití databáze Redis v aplikacích naprogramovaných v Go (2)

  • Článek je starý, nové názory již nelze přidávat.
  • 28. 6. 2020 20:24

    M_D

    Jen asi hnidopišská poznámka k té implementaci PUSH-PULL consumera nad listem pomocí BRPOP - vidím, že stejný kus kódu byl již v 1. nastiňujícím díle. Nebylo by vhodnější postoupit a použít BRPOPLPUSH? To by spíše měla používát reálná implmentace, pokud chci mít trochu jistotu, že se mi nebudou ztrácet příkazy doručované do command listu. Pomocí BRPOPLPUSH atomicky odeberu z distribučního listu zprávu, dostane ji volající klient a vloží se i do pracovního seznamu a až zprávu zpracuji, tak ji z pracovního smažu. Takže když consumer nečekaně zahučí, tak po novém startu se může do pracovního listu podívat, zda mu nevisí něco rozpracovaného a pokračovat.Stejně tak když nastane chyba ve zpracování, tak dle charakteru pak zprávu může pomocí RPOPLPUSH přesunout do listu pro pozdějíš zpracování (nebo vrátit do distriučního k dalšímu kolu), pokud chyba je nenapravitelná, tak se zpráva přesunu do deadletter listu k pozdější analýze, co to došlo za blbost. Pokud toto bude v nějakém advanced dalším dílu, tak jsem nic nenapsal. :-)

  • 30. 6. 2020 8:43

    tisnik

    Nene poznámka je to dobrá a ano - bude to v dalším dílu, včetně zmíněného DLQ i popisu, jak se liší možnosti doručení typu "delivered once and only once" a "delivered at least once" (a proč nelze zaručit "once in all cases")