> Tech > Messages asynchrones : Introduction

Messages asynchrones : Introduction

Tech - Par Sharon L. Hoffman - Publié le 24 juin 2010
email

La messagerie asynchrone n’est pas une nouveauté, mais elle prend de plus en plus d’importance au fur et à mesure que les applications iSeries vont bien au-delà du domaine confortable des solutions RPG monoplate-forme. La messagerie asynchrone isole les communications interapplications des mécanismes internes d’une application particulière. De quoi simplifier les choses pour les applications dont les composantes tournent sur des plates-formes multiples et sont écrites en plusieurs langages.La messagerie asynchrone contribue aussi à atténuer l’impact des défaillances de communications, en renvoyant les messages qui n’ont pas atteint leur destination et en filtrant les messages en double. Si les files d’attente de données iSeries vous sont familières, vous avez déjà une bonne notion du fonctionnement de la messagerie asynchrone, même si les files d’attente de données ignorent quelques fonctions de messagerie asynchrone importantes, comme la reprise automatisée en cas d’échec de la transmission.

Le concept de la messagerie asynchrone est celui d’une file d’attente accessible à de multiples applications. Une application place un message (une requête demandant l’exécution d’un travail) dans la file d’attente, et une autre application extrait le message et honore la requête. Généralement, les données du message elles-mêmes ne sont pas formatées, mais les messages comportent souvent quelques informations d’état, comme l’application à l’origine du message et un timestamp.

Une fois qu’une application a placé son message dans la file d’attente, elle continue le traitement au lieu d’attendre une réponse. D’où la « messagerie asynchrone ». Comme l’application initiatrice n’est pas retardée pendant que l’application réceptrice prépare une réponse, la messagerie asynchrone est idéale quand le processus demandé prend du temps ou que le serveur qui exécute l’application réceptrice est indisponible au moment où le message est placé dans la file d’attente. Plusieurs applications peuvent placer des messages sur la même file d’attente et, même si c’est moins courant, plusieurs applications peuvent en extraire des messages.

L’application réceptrice extrait les messages dans la file d’attente dans l’ordre FIFO (first-in-first-out), LIFO (last-in-first-out), ou dans un ordre dépendant de l’application comme un index. Avec certains types de messagerie asynchrone, les développeurs peuvent aussi attribuer des priorités de messages qui supplantent l’ordre de la file d’attente ou interagissent avec lui. Aussitôt extrait, le message est retiré de la file d’attente et il peut très bien y avoir un mécanisme de réponse propre à l’application, chargé d’accuser réception du message. Ainsi, l’application réceptrice pourrait renvoyer un code de bonne fin par le biais d’une autre file d’attente. La plupart des solutions de messagerie asynchrone intègrent la « livraison garantie », assurant que chaque message est délivré exactement une fois. Les messages en double sont automatiquement ignorés. Si un message ne peut pas être délivré dans un laps de temps prédéfini, une erreur est générée.

La messagerie asynchrone est le plus souvent associée aux applications multiplates-formes et à celles qui doivent honorer des requêtes provenant d’une variété de sources (comme les réservations de vols). Mais on peut aussi adopter la messagerie asynchrone pour des applications monoplateforme internes, et beaucoup de sites iSeries procèdent ainsi pour éviter qu’une application interactive (comme une saisie de commandes) ne doive attendre un processus d’arrièreplan (comme l’impression d’étiquettes d’expédition).

Les solutions de messagerie asynchrone les plus simples ne demandent aucun logiciel spécialisé. Ainsi, vous pourriez pratiquer la messagerie asynchrone en écrivant des transactions dans un fichier lu périodiquement par une autre application, en utilisant des codes d’état pour indiquer quand un enregistrement a été traité, et en effaçant le fichier durant la nuit. On peut aussi utiliser d’autres objets iSeries, comme des zones de données ou des files d’attente de messages, pour transférer de l’information d’une application à une autre. Mais ce genre de solution maison alourdit le fardeau du développeur, faute de support intégré pour la messagerie asynchrone. Par exemple, alors que les solutions de messagerie asynchrone spécialisées retirent automatiquement les messages de la file d’attente une fois qu’ils ont été extraits, vous devrez vous charger de cet aspect de la messagerie si vous stockez vos messages dans une file, zone de données, ou file d’attente de messages.

Téléchargez gratuitement cette ressource

Observabilité 2.0 : 5 défis à relever

Observabilité 2.0 : 5 défis à relever

Microservices, containers, infrastructures cloud « software-defined »... ces innovations créent une complexité extrême à l’échelle du web et étendent considérablement le périmètre d’observabilité. Comment identifier et relever ces nouveaux défis ?

Tech - Par Sharon L. Hoffman - Publié le 24 juin 2010