Exemple Exécution d'une commande système sur réception d'un message

De Wiki1000

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 :

image1.png

  • 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 :

image1.png

  • 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.

image2.png

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.

Voir aussi :

Outils personnels