XGROUP CREATE în Redis & In-Memory Data Store

Creează un grup de consumatori pe un stream, astfel încât mai mulți workeri să-și împartă mesajele.

Sintaxă comandă
XGROUP CREATE key group <id | $> [MKSTREAM] [ENTRIESREAD entries-read]
XGROUP DESTROY key group
XGROUP CREATECONSUMER key group consumer
XGROUP DELCONSUMER key group consumer

Ce face XGROUP CREATE

Un grup de consumatori ține minte, pe server, până unde a citit grupul și ce mesaje au fost livrate fiecărui consumator. Mesajele din stream sunt împărțite între consumatorii grupului: fiecare mesaj ajunge la un singur consumator.

XGROUP CREATE primește ID-ul de la care grupul începe să citească: $ = doar mesajele noi, 0 = tot istoricul. MKSTREAM creează stream-ul gol dacă nu există încă. Pe același stream pot exista mai multe grupuri (de exemplu „facturare” și „livrare”), fiecare cu propria poziție.

Parametri

Parametru Descriere
key Stream-ul.
group Numele grupului.
id | $ De unde citește grupul: $ doar intrări noi, 0 de la început.
MKSTREAM Creează stream-ul dacă lipsește.
DESTROY / DELCONSUMER Șterge grupul, respectiv un consumator din grup.

Ce returnează

OK la creare; eroarea BUSYGROUP dacă grupul există deja.

Exemple

Exemplul 1: Două grupuri independente pe același stream

Facturarea procesează tot istoricul, livrarea doar comenzile noi. A doua creare a aceluiași grup dă eroare.

XGROUP CREATE comenzi facturare 0
XGROUP CREATE comenzi livrare $
XGROUP CREATE comenzi facturare 0

Ieșire în redis-cli

127.0.0.1:6379> XGROUP CREATE comenzi facturare 0
OK
127.0.0.1:6379> XGROUP CREATE comenzi livrare $
OK
127.0.0.1:6379> XGROUP CREATE comenzi facturare 0
(error) BUSYGROUP Consumer Group name already exists

Exemplul 2: Grup pe un stream care nu există încă

Fără MKSTREAM comanda ar da eroare, pentru că stream-ul plati nu există.

XGROUP CREATE plati procesare $ MKSTREAM
XLEN plati

Ieșire în redis-cli

127.0.0.1:6379> XGROUP CREATE plati procesare $ MKSTREAM
OK
127.0.0.1:6379> XLEN plati
(integer) 0

Greșeli frecvente

  • La pornirea aplicației, tratează eroarea BUSYGROUP ca „grupul există deja”, nu ca o problemă.
  • Un grup creat cu $ nu vede mesajele scrise înainte de creare.

Comenzi înrudite

  • XREADGROUP: Citește mesaje dintr-un stream ca membru al unui grup de consumatori; fiecare mesaj ajunge la un singur consumator.
  • XACK / XPENDING: XACK confirmă că un mesaj din grup a fost procesat; XPENDING arată mesajele livrate, dar încă neconfirmate.
  • XADD: Adaugă un eveniment (o intrare cu câmpuri și valori) la finalul unui stream Redis și întoarce ID-ul lui.