Commande AWS SQS → persistance et notification
Ce workflow consomme les messages d'une file Amazon SQS, enregistre chaque commande dans PostgreSQL, notifie la direction pour les montants élevés et transmet la commande à l'ERP.
Le besoin
Chaque commande reçue sur une file Amazon SQS doit être enregistrée dans PostgreSQL pour servir de référence. Les montants élevés doivent notifier la direction, et chaque commande doit être transmise à l'ERP pour le traitement comptable. En cas d'échec d'enregistrement, l'équipe technique doit être alertée.
Ce que fait le flux
- Commande reçue (SQS) — le déclencheur AWS SQS lance une exécution pour chaque message reçu dans la file. Les données de la commande arrivent dans
data. - Enregistrer la commande — le nœud PostgreSQL insère la ligne dans la table
commandesà l'aide de paramètres liés ($1,$2, …). - Montant élevé ? — la condition compare
{{ data.montant }}au seuil de 500. - Notifier la direction — si le montant dépasse le seuil, un e-mail est envoyé à la direction.
- Transmettre à l'ERP — le nœud Envoi AWS SQS publie la commande dans la file de l'ERP pour le traitement comptable.
- Gérer l'échec SQL — en cas d'erreur du nœud PostgreSQL, le nœud On Error prend le relais puis Alerter l'équipe technique envoie un e-mail aux équipes internes.
Ce dont vous avez besoin
- Un déclencheur AWS SQS qui lance une exécution pour chaque message reçu dans la file.
- Les nœuds du flux : PostgreSQL, Condition, Envoi e-mail, Envoi AWS SQS et On Error.
Construction
Copiez la définition du workflow et collez-la dans l'éditeur (le nœud Déclencheur est recréé automatiquement, il n'est pas dans le snippet) :
[
{
"id": "db-104",
"name": "Enregistrer la commande",
"config": {
"type": "DATABASE_POSTGRESQL",
"query": "INSERT INTO commandes (reference, montant, client) VALUES ($1, $2, $3) RETURNING id",
"binds": [
"$.data.reference",
"$.data.montant",
"$.data.client"
],
"outputKey": "orderResult"
},
"parents": [
"trigger"
],
"position": {
"x": 0,
"y": 200
},
"next": "cond-104"
},
{
"id": "cond-104",
"name": "Montant élevé ?",
"config": {
"type": "CONDITION",
"conditionCode": "return data.montant > 500;",
"conditions": [
{
"value": true,
"next": "email-104"
},
{
"value": false,
"next": null
}
]
},
"parents": [
"db-104"
],
"position": {
"x": 0,
"y": 400
}
},
{
"id": "email-104",
"name": "Notifier la direction",
"config": {
"type": "SEND_EMAIL",
"to": [
"direction@boutique-france.fr"
],
"subject": "Commande élevée : {{ data.montant }} €",
"content": "Une commande de {{ data.montant }} € a été enregistrée (réf. {{ data.reference }}).",
"sendAsHtml": true
},
"parents": [
"cond-104"
],
"position": {
"x": 0,
"y": 600
},
"next": "sqs-104"
},
{
"id": "sqs-104",
"name": "Transmettre à l'ERP",
"config": {
"type": "SEND_AWS_SQS",
"region": "eu-west-1",
"queue": {
"type": "STANDARD",
"url": "https://sqs.eu-west-1.amazonaws.com/123456789012/orders-erp",
"messageBody": "{\"reference\": \"{{ data.reference }}\", \"montant\": \"{{ data.montant }}\"}"
}
},
"parents": [
"email-104"
],
"position": {
"x": 0,
"y": 800
}
},
{
"id": "error-104",
"name": "Gérer l'échec SQL",
"config": {
"type": "ON_ERROR",
"enabledEnvironments": []
},
"parents": [],
"position": {
"x": -800,
"y": 0
},
"next": "error-email-104"
},
{
"id": "error-email-104",
"name": "Alerter l'équipe technique",
"config": {
"type": "SEND_EMAIL",
"to": [
"ops@boutique-france.fr"
],
"subject": "Échec SQL : commande {{ data.reference }}",
"content": "L'insertion de la commande {{ data.reference }} a échoué en base de données.",
"sendAsHtml": true
},
"parents": [
"error-104"
],
"position": {
"x": -800,
"y": 200
}
}
]
Vérifier que ça marche
Le payload du déclencheur doit exposer les champs de la commande utilisés par le flux (reference, montant), sinon les champs {{ data… }} resteront vides. Déployez le flux, déclenchez une exécution et consultez les traces pour vérifier l'enregistrement de la commande, la notification pour les montants élevés et la transmission à l'ERP.
Variantes
- Seuil : la valeur
500est codée dans la condition ; déplacez-la dans un dictionnaire si elle doit varier sans modifier le flux. - Retour de file : configurez un Visibility Timeout au moins égal à la durée d'exécution du flux, sinon le message peut être redélivré — voir Déclencheur AWS SQS.
- Branche d'erreur : le nœud On Error capte l'erreur du nœud PostgreSQL (point de départ, sans nœud en amont) ; les étapes qui suivent (Alerter l'équipe technique) illustrent la chaîne de traitement de l'erreur à recréer dans l'éditeur.
- Sécurité des requêtes : utilisez la liaison des paramètres fournie par le nœud PostgreSQL au lieu de concaténer des valeurs dans la requête — voir Nœud PostgreSQL.
Voir la référence
Voir aussi : Exemples et intégrations