Données de baseTâches de fond

Streaming d'événements

Des streams d'événements en ajout seul, avec groupes de consommateurs, acquittements et récupération automatique des messages laissés par un consommateur planté.

journal en ajout seul
Durable
groupes de consommateurs par stream
N
message perdu en cas de plantage
0
Étape 1 sur 5
Publier un événement

Le service commandes ajoute un événement et reçoit son identifiant en retour.

Session d’exempleplaying
# Publier un événement
hotkv> XADD orders * type created order 1182 total 49.00
"1790985600123-0"

Une démonstration animée avec de vraies commandes HotKV et des exemples de réponses. Cliquez sur une étape pour y accéder directement. Les commandes et les réponses restent en anglais, exactement comme vous les saisissez et les voyez dans HotKV.

Le problème

Les services qui réagissent à des événements ont besoin de plus qu'une file. Plusieurs consommateurs indépendants veulent les mêmes événements, chaque groupe de consommateurs doit répartir le travail entre ses instances, et quand une instance tombe avec des messages en main, quelqu'un doit s'en apercevoir et les reprendre.

Comment HotKV s'en charge

Un stream est un journal en ajout seul. Chaque groupe de consommateurs le lit indépendamment, livre chaque message à un seul membre du groupe et le garde en attente jusqu'à ce que ce membre l'acquitte. XAUTOCLAIM confie les messages restés trop longtemps en attente à un consommateur en bonne santé.

Étape par étape

Ce qui se passe, commande par commande

  1. 01

    Publier un événement

    Le service commandes ajoute un événement et reçoit son identifiant en retour.

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

    Deux groupes, un stream

    La facturation et l'expédition ont chacune leur propre groupe, et chacune reçoit l'événement.

    XGROUP CREATE orders billing 0 MKSTREAM
  3. 03

    Consommer

    Une instance de facturation lit les nouveaux messages de son groupe, en attendant que quelque chose arrive.

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

    Acquitter

    Une fois la facture créée, la facturation acquitte le message, qui quitte sa liste d'attente.

    XACK orders billing 1790985600123-0
  5. 05

    Se remettre d'un plantage

    Une instance d'expédition est tombée avec des messages en main. Après 60 secondes d'inactivité, ils sont repris par une instance saine.

    XAUTOCLAIM orders shipping shipping-2 60000 0-0 COUNT 25
Où cela s'applique

Scénarios concrets

Pipelines de commandes

Les commandes circulent vers la facturation, l'expédition et l'analytique, chacune lisant le même stream à son propre rythme.

Audit et fils d'activité

Les actions des utilisateurs sont ajoutées à un stream et rejouées par tout service qui a besoin de l'historique.

Ingestion IoT

Les messages des appareils sont mis en tampon dans des streams et traités par un groupe de workers qui s'adapte à la charge.

Intégré

Ce que vous obtenez

Journal en ajout seul

Les entrées reçoivent des identifiants ordonnés dans le temps et peuvent être élaguées par longueur ou par âge.

XADDXTRIM

Groupes de consommateurs

Chaque groupe reçoit chaque message et répartit le travail entre ses membres.

XGROUPXREADGROUP

Acquittements

Les messages restent en attente jusqu'à leur acquittement.

XACKXPENDING

Récupération automatique

Les messages inactifs trop longtemps sont repris par un autre consommateur.

XAUTOCLAIMXCLAIM

Questions fréquentes

Puis-je rejouer d'anciens événements ?

Oui. XRANGE lit n'importe quelle partie du stream par identifiant, et un nouveau groupe de consommateurs peut partir du début.

Comment empêcher un stream de grossir indéfiniment ?

Élaguez-le avec XTRIM ou avec l'option MAXLEN ou MINID de XADD.

XADD peut-il éviter les événements en double ?

XADD prend en charge les identifiants de producteur idempotents (IDMP), et une publication retentée ne crée pas de seconde entrée. Consultez la référence de XADD.

Cas d'usage associés

Essayez-le sur votre propre charge de travail

HotKV parle le protocole Redis. Vous pouvez donc y connecter un client existant et exécuter ces mêmes commandes.