Exemple Exécution d'une commande système sur réception d'un message
Sommaire |
Dans cet exemple nous allons montrer comment exécuter une commande système lors de la réception d'un message de file d'attente en utilisant :
- Une file d'attente ActiveMQ
- Une tâche exécution de commande
- Un automate
Configuration de la file d'attente
La file d'attente source est configurée ainsi :
- Le nom de paramétrage de la file est AMQ
- Le type de la file est ActiveMQ ce qui indique une file d'attente gérée par uns serveur ActiveMQ
- La chaine de connexion référence le serveur ActiveMQ s'exécutant sur le serveur merlin et indique le nom de file sur ce serveur.
Code snippet du producteur
Le code générant le message dans la file activeMQ est le suivant :
var msg:TdbmQueueMessage; idx:Integer; begin for idx:=1 to 1 do begin msg := TdbmQueueMessage.Create; msg.QueueName := 'AMQ'; msg.AddParameter('uneChaine','some text'); msg.AddParameter('unEntier',1999); msg.BinaryContent.LoadFromFile('c:\image.jpg'); msg.Post; end; end;
Configuration de l'automate
La tâche d'automate est configurée ainsi :
- L'évènement déclencheur est un évènement file d'attente configuré sur la file d'attente AMQ
- La tâche exécuté est une tache exécution de commande système.
La configuration de la tâche définie la commande a exécuter.
La ligne de commande de la tâche reçoit en paramètre des valeurs issues du message consommé :
CmdLine=@unEntier
Exécution
L'exécution du code du producteur crée un message dans ActiveMQ qui est ensuite consommé par l'automate.
La tâche externe est exécutée.
Pour vérifier le passage de paramètre on utilise ce batch :
echo %* 1>args.txt exit 0
qui liste les arguments reçus dans un fichier.
On obtient :
1999 param2
ce qui montre le mécanisme de substitution des paramètres du message.