Aller au contenu principal

Union multi-topics — fusionner les flux

Intermédiaire ⏱ 10 min streaming · union · fan-in

Vous allez construire : un stage consommant trois topics de commandes régionales comme un seul flux fusionné — le fan-in sans glue code.

orders-us + orders-eu + orders-apac → stage union → orders-merged

Prérequis​

1 · Générez​

pulse new global-orders --source webhook --stage rule-based:merge

2 · Déclarez l'union​

stages:
- name: merge
engine: rule-based
inputTopics: [ orders-eu, orders-apac ] # en plus de l'entrée primaire
rules:
- { condition: "true", action: "emit:orders-merged" }

inputTopics abonne le stage à des topics supplémentaires en plus de son entrée primaire (global-orders.in). La règle avec condition: "true" laisse tout passer, en réémettant sur un topic fusionné unique via action: "emit:orders-merged".

3 · Déployez et alimentez les trois régions​

pulse secret set PULSE_WEBHOOK_SECRET dev-secret # la source webhook générée l'exige
pulse deploy .
pulse events publish --topic global-orders.in --value '{"region":"us","amount":10}'
pulse events publish --topic orders-eu --value '{"region":"eu","amount":20}'
pulse events publish --topic orders-apac --value '{"region":"apac","amount":30}'

4 · Un seul flux fusionné​

pulse events tail --topic orders-merged

Les trois événements arrivent sur l'unique topic fusionné — le stage a consommé l'union de ses entrées.

Ce qui vient de se passer​

Le fan-in est déclaratif : inputTopics dans la config du stage, rien d'autre. Combiné au fan-out (plusieurs stages abonnés à un même topic) et au join stream-stream (qui s'abonne automatiquement à son rightTopic), vous avez toutes les primitives de composition de flux sans écrire un consommateur.

Dépannage​

Les événements des topics supplémentaires n'arrivent pas

inputTopics est une liste dans la config du stage, au même niveau que rules/operators. Les entrées vides et le topic primaire lui-même sont ignorés — vérifiez l'orthographe avec pulse events tail sur le topic source.

Ensuite​