File d'attente de message

Un article de Wikipédia, l'encyclopédie libre.

Une file d'attente de message est une technologie de programmation utilisée pour la communication d'interprocessus ou la communication de serveur-à-serveur. En anglais, on parle de « Message-Oriented Middleware » ou « Mom ».

Sommaire

[modifier] Vue d'ensemble

Les files d'attente de message fournissent des liaisons asynchrones normalisées. Elles ont pour but que l'expéditeur et le récepteur du message ne soient pas contraints de s'attendre l'un l'autre. Des messages placés dans la file d'attente sont stockés, jusqu'à ce que le destinataire les recherche. L'expéditeur n'a pas à attendre que le récepteur commence à traiter son message, il poste son information et peut passer à autre chose.

Beaucoup de réalisations de files d'attente sont créées pour les besoins internes des systèmes d'exploitation. Elles sont indispensables pour la synchronisation ou le travail multitâche des processus.

D'autres réalisations de file d'attente permettent une communication entre différents systèmes informatiques, connectant plusieurs applications, ou plusieurs systèmes d'exploitation. Ces systèmes de synchronisation de messages fournissent typiquement une fonctionnalité de persistance pour s'assurer que les messages ne sont pas perdus en cas d'échec du système. On parle d'Intergiciel orienté message.

[modifier] Utilisation

Dans une implémentation typique de queue de message, une interface gestionnaire installerait et configurerait un intergiciel orienté message (un gestionnaire de files d'attente), et définirait une file d'attente de message identifiée.

Une application s'enregistrerait alors au moyen d'une routine logicielle qui « écouterait » des messages placés sur la file d'attente.

Une deuxième application se relierait alors à cette file d'attente et transférerait un message.

Le logiciel de gestionnaire de files d'attente stockerait le message jusqu'à ce que l'application de réception soit connectée, et demande le message en attente. L'application en réception traiterait alors ce message de façon appropriée.

[modifier] Synchrone contre asynchrone

Plusieurs des protocoles de transmissions, plus largement connus et en service ces derniers temps, sont synchrones de nature. L'exemple le plus évident est le protocole HTTP.

Dans un modèle synchrone, les systèmes en interaction envoient une demande et se mettent en attente d'une réponse. Dans beaucoup de situations cela semble raisonnable (Par exemple, un utilisateur envoie une demande d'une page Web, puis attend une réponse).

Cependant, il y a d'autres situations pour lesquelles ce n'est pas approprié. Par exemple, si une application souhaite informer les autres qu'un évènement s'est produit, mais ne veut pas attendre une réponse. Un autre exemple est dans le cas des systèmes en publicateur/abonnés, où une application publicatrice « édite » une information pour toutes les autres. Dans ces deux exemples il ne serait pas acceptable pour l'expéditeur de l'information de devoir attendre la réponse d'un destinataire « tombé en panne ».

[modifier] Produits commerciaux