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​