Dati di baseLavoro in background

Streaming di eventi

Stream di eventi append-only con consumer group, conferme e recupero automatico dei messaggi lasciati indietro da un consumer bloccato.

log append-only
Durevole
consumer group per stream
N
messaggi persi in un crash
0
Passo 1 di 5
Pubblica un evento

Il servizio ordini aggiunge un evento e riceve il suo id.

Sessione di esempioplaying
# Pubblica un evento
hotkv> XADD orders * type created order 1182 total 49.00
"1790985600123-0"

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.

Il problema

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.

Come lo gestisce HotKV

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.

Passo dopo passo

Cosa succede, comando per comando

  1. 01

    Pubblica un evento

    Il servizio ordini aggiunge un evento e riceve il suo id.

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

    Due gruppi, uno stream

    Fatturazione e spedizioni hanno ciascuna il proprio gruppo e ciascuna riceve l'evento.

    XGROUP CREATE orders billing 0 MKSTREAM
  3. 03

    Consuma

    Un'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 >
  4. 04

    Conferma

    Una volta creata la fattura, la fatturazione conferma e il messaggio esce dalla sua lista dei sospesi.

    XACK orders billing 1790985600123-0
  5. 05

    Recupera da un crash

    Un'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 25
Dove si usa

Scenari reali

Pipeline degli ordini

Gli ordini scorrono verso fatturazione, spedizioni e analisi, ognuna delle quali legge lo stesso stream al proprio ritmo.

Feed di audit e attività

Le azioni degli utenti vengono aggiunte a uno stream e rilette da qualsiasi servizio abbia bisogno della cronologia.

Acquisizione IoT

I messaggi dei dispositivi vengono bufferizzati negli stream ed elaborati da un gruppo di worker che scala con il carico.

Integrato

Cosa ottieni

Log append-only

Le voci ricevono id ordinati nel tempo e si possono tagliare per lunghezza o età.

XADDXTRIM

Consumer group

Ogni gruppo riceve ogni messaggio e divide il lavoro tra i suoi membri.

XGROUPXREADGROUP

Conferme

I messaggi restano in sospeso finché non vengono confermati.

XACKXPENDING

Recupero automatico

I messaggi inattivi troppo a lungo vengono presi da un altro consumer.

XAUTOCLAIMXCLAIM

Domande frequenti

Posso rileggere eventi vecchi?

Sì. XRANGE legge qualsiasi parte dello stream per id, e un nuovo consumer group può partire dall'inizio.

Come evito che uno stream cresca all'infinito?

Taglialo con XTRIM o con l'opzione MAXLEN o MINID di XADD.

XADD può evitare eventi duplicati?

XADD supporta id di producer idempotenti (IDMP), quindi una pubblicazione ritentata non crea una seconda voce. Vedi il riferimento di XADD.

Casi d'uso correlati

Provalo sul tuo carico di lavoro

HotKV parla il protocollo Redis, quindi puoi puntarci un client esistente ed eseguire questi stessi comandi.