Aller au contenu principal

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.

Chargement du diagramme…

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​

  1. 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.
  2. Enregistrer la commande — le nœud PostgreSQL insère la ligne dans la table commandes à l'aide de paramètres liés ($1, $2, …).
  3. Montant élevé ? — la condition compare {{ data.montant }} au seuil de 500.
  4. Notifier la direction — si le montant dépasse le seuil, un e-mail est envoyé à la direction.
  5. Transmettre à l'ERP — le nœud Envoi AWS SQS publie la commande dans la file de l'ERP pour le traitement comptable.
  6. 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​

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 500 est 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