Aller au contenu principal

Le tour des sources & sinks

Débutant ⏱ 10 min sources · sinks · connecteurs

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.

[webhook | file-tail | http-poll] → stages → sink

Prérequis

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.

Ensuite