Le tour des sources & sinks
Vous allez construire : la même application alimentée de trois façons — webhook, fichier suivi, HTTP interrogé — pour constater que les stages ignorent totalement d'où viennent les événements.
Prérequis
- N'importe quelle application générée (commencez ici sinon).
1 · Listez ce qui est disponible
pulse new --list-sources
pulse new --list-sinks
Les sources incluent webhook · file-tail · file-source · http-poll · jdbc-source … ; les sinks incluent webhook · slack · kafka · jdbc · mqtt · s3 · file …. La palette vient des schémas de connecteurs installés — cette liste est votre vérité terrain, toujours à jour pour votre version.
2 · Alimenter par webhook (ce que vous avez déjà fait)
pulse events publish --topic hello.in --value @sample.json
Sous le capot, ceci fait un POST vers l'ingress de l'application — n'importe quel client HTTP peut faire pareil (voir Appeler votre app de n'importe où).
3 · Passer à un fichier suivi
source:
kind: file-tail
path: /tmp/hello-events.log
Redéployez, puis alimentez en ajoutant des lignes :
echo '{"severity":"error","msg":"disk full"}' >> /tmp/hello-events.log
4 · Passer à l'interrogation HTTP
source:
kind: http-poll
url: https://api.example.com/events
intervalSeconds: 30
Pulse interroge le point d'accès et transforme chaque nouvel enregistrement en événement. Mêmes stages, intouchés, troisième source d'affilée.
5 · Pointez le sink vers quelque chose de réel
sink:
kind: webhook
url: ${secret:DOWNSTREAM_WEBHOOK}
Définissez d'abord le secret : pulse secret set DOWNSTREAM_WEBHOOK https://…. Un sink Slack fonctionne pareil avec une URL de webhook Slack.
Ce qui vient de se passer
Les sources et les sinks sont des adaptateurs interchangeables autour d'un cœur stable. Votre logique vit dans les stages, contre des topics ; la palette de connecteurs est la façon dont le monde extérieur atteint ces topics. C'est pourquoi migrer une application de « lire un fichier de log » à « recevoir des webhooks à grande échelle » est un diff de deux lignes.
Dépannage
file-tail ne voit rien
Vérifiez que le chemin est absolu et que le fichier existe avant le deploy. Puis ajoutez avec >> — la source capte les nouvelles lignes ; elle ne relit pas l'historique par défaut.
http-poll m'inonde de doublons
Donnez à la source un moyen de savoir ce qui est nouveau (curseur/timestamp sur votre endpoint). Ajoutez un opérateur dedup dans un stage streaming comme garde supplémentaire.