Pipeline degli ordini
Gli ordini scorrono verso fatturazione, spedizioni e analisi, ognuna delle quali legge lo stesso stream al proprio ritmo.
Stream di eventi append-only con consumer group, conferme e recupero automatico dei messaggi lasciati indietro da un consumer bloccato.
Il servizio ordini aggiunge un evento e riceve il suo id.
Una dimostrazione animata con comandi HotKV reali e risposte di esempio. Clicca su un passo qualsiasi per andarci. Comandi e risposte restano in inglese, esattamente come li digiti e li vedi in HotKV.
I servizi che reagiscono agli eventi hanno bisogno di più di una coda. Diversi consumer indipendenti vogliono gli stessi eventi, ogni consumer group deve dividere il lavoro tra le istanze, e quando un'istanza muore con dei messaggi in mano qualcuno deve accorgersene e prenderli in carico.
Uno stream è un log append-only. Ogni consumer group lo legge in modo indipendente, consegna ogni messaggio a un solo membro del gruppo e lo tiene in sospeso finché il membro non lo conferma. XAUTOCLAIM passa i messaggi rimasti in sospeso troppo a lungo a un consumer sano.
Il servizio ordini aggiunge un evento e riceve il suo id.
XADD orders * type created order 1182 total 49.00Fatturazione e spedizioni hanno ciascuna il proprio gruppo e ciascuna riceve l'evento.
XGROUP CREATE orders billing 0 MKSTREAMUn'istanza della fatturazione legge i nuovi messaggi per il suo gruppo, restando in attesa finché arriva qualcosa.
XREADGROUP GROUP billing billing-1 COUNT 10 BLOCK 5000 STREAMS orders >Una volta creata la fattura, la fatturazione conferma e il messaggio esce dalla sua lista dei sospesi.
XACK orders billing 1790985600123-0Un'istanza delle spedizioni è morta con dei messaggi in mano. Dopo 60 secondi di inattività vengono presi da un'istanza sana.
XAUTOCLAIM orders shipping shipping-2 60000 0-0 COUNT 25Gli ordini scorrono verso fatturazione, spedizioni e analisi, ognuna delle quali legge lo stesso stream al proprio ritmo.
Le azioni degli utenti vengono aggiunte a uno stream e rilette da qualsiasi servizio abbia bisogno della cronologia.
I messaggi dei dispositivi vengono bufferizzati negli stream ed elaborati da un gruppo di worker che scala con il carico.
Le voci ricevono id ordinati nel tempo e si possono tagliare per lunghezza o età.
XADDXTRIMOgni gruppo riceve ogni messaggio e divide il lavoro tra i suoi membri.
XGROUPXREADGROUPI messaggi restano in sospeso finché non vengono confermati.
XACKXPENDINGI messaggi inattivi troppo a lungo vengono presi da un altro consumer.
XAUTOCLAIMXCLAIMSì. XRANGE legge qualsiasi parte dello stream per id, e un nuovo consumer group può partire dall'inizio.
Taglialo con XTRIM o con l'opzione MAXLEN o MINID di XADD.
XADD supporta id di producer idempotenti (IDMP), quindi una pubblicazione ritentata non crea una seconda voce. Vedi il riferimento di XADD.
HotKV parla il protocollo Redis, quindi puoi puntarci un client esistente ed eseguire questi stessi comandi.