KärndataBakgrundsarbete

Händelseströmmar med konsumentgrupper

Strömmar av händelser som bara läggs till, med konsumentgrupper, kvittenser och automatisk återhämtning av meddelanden som en kraschad konsument lämnade efter sig.

logg som bara läggs till
Beständig
konsumentgrupper per ström
N
förlorade meddelanden vid en krasch
0
Steg 1 av 5
Publicera en händelse

Beställningstjänsten lägger till en händelse och får tillbaka dess id.

Exempelsessionplaying
# Publicera en händelse
hotkv> XADD orders * type created order 1182 total 49.00
"1790985600123-0"

En animerad genomgång med riktiga HotKV-kommandon och exempelsvar. Klicka på valfritt steg för att hoppa dit. Kommandon och svar förblir på engelska, precis som du skriver och ser dem i HotKV.

Problemet

Tjänster som reagerar på händelser behöver mer än en kö. Flera oberoende konsumenter vill ha samma händelser, varje konsumentgrupp behöver dela arbete mellan instanser, och när en instans dör med meddelanden i händerna måste någon märka det och ta över dem.

Så löser HotKV det

En ström är en logg som bara läggs till. Varje konsumentgrupp läser den oberoende, levererar varje meddelande till en medlem i gruppen och håller det väntande tills medlemmen kvitterar det. XAUTOCLAIM lämnar över meddelanden som varit väntande för länge till en frisk konsument.

Steg för steg

Vad som händer, kommando för kommando

  1. 01

    Publicera en händelse

    Beställningstjänsten lägger till en händelse och får tillbaka dess id.

    XADD orders * type created order 1182 total 49.00
  2. 02

    Två grupper, en ström

    Fakturering och frakt har varsin grupp och får båda händelsen.

    XGROUP CREATE orders billing 0 MKSTREAM
  3. 03

    Konsumera

    En faktureringsinstans läser nya meddelanden för sin grupp och blockerar tills något kommer.

    XREADGROUP GROUP billing billing-1 COUNT 10 BLOCK 5000 STREAMS orders >
  4. 04

    Kvittera

    När fakturan har skapats kvitterar faktureringen och meddelandet lämnar listan över väntande.

    XACK orders billing 1790985600123-0
  5. 05

    Återhämta dig från en krasch

    En fraktinstans dog med meddelanden i händerna. Efter 60 sekunders overksamhet tas de över av en frisk.

    XAUTOCLAIM orders shipping shipping-2 60000 0-0 COUNT 25
Där det passar

Verkliga scenarier

Beställningsflöden

Beställningar flödar till fakturering, frakt och analys, som var och en läser samma ström i sin egen takt.

Granskningsloggar och aktivitetsflöden

Användaråtgärder läggs till i en ström och spelas upp av vilken tjänst som helst som behöver historiken.

Insamling av IoT-data

Enhetsmeddelanden buffras i strömmar och bearbetas av en grupp arbetare som skalar med lasten.

Inbyggt

Det här får du

Logg som bara läggs till

Poster får tidsordnade id och kan trimmas efter längd eller ålder.

XADDXTRIM

Konsumentgrupper

Varje grupp får alla meddelanden och delar arbetet mellan sina medlemmar.

XGROUPXREADGROUP

Kvittenser

Meddelanden förblir väntande tills de kvitteras.

XACKXPENDING

Automatisk återhämtning

Meddelanden som varit overksamma för länge tas över av en annan konsument.

XAUTOCLAIMXCLAIM

Vanliga frågor

Kan jag spela upp gamla händelser?

Ja. XRANGE läser vilken del av strömmen som helst via id, och en ny konsumentgrupp kan börja från början.

Hur hindrar jag en ström från att växa för evigt?

Trimma den med XTRIM eller med alternativet MAXLEN eller MINID i XADD.

Kan XADD undvika dubbla händelser?

XADD stöder idempotenta producent-id (IDMP), så att en omförsökt publicering inte skapar en andra post. Se XADD-referensen.

Relaterade användningsfall

Prova på din egen arbetslast

HotKV talar Redis-protokollet, så du kan peka en befintlig klient mot det och köra samma kommandon.