Accueil🇫🇷Chercher

File d'attente de message

Une file d'attente de message ou simplement file de messages est une technique de programmation utilisée pour la communication interprocessus ou la communication de serveur-à-serveur. Les logiciels fournissant ce type de service font partie des « Message-Oriented Middleware » ou MOM.

Vue d'ensemble

Les files d'attente de message permettent le fonctionnement des liaisons asynchrones normalisées entre deux serveurs, c'est-à-dire de canaux de communications tels que l'expéditeur et le récepteur du message ne sont pas contraints de s'attendre l'un l'autre, mais poursuivent chacun l'exécution de leurs tâches. La file d'attente stocke les messages émis par l'expéditeur, 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.

Le principe très général de la file d'attente est énormément utilisé pour les besoins internes des systèmes d'exploitation. Les files d'attente 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 (« serveurs »), connectant plusieurs applications, ou plusieurs systèmes d'exploitation. Ces systèmes de synchronisation de messages sont typiquement dotés d'une fonctionnalité de persistance pour s'assurer que les messages ne sont pas perdus en cas d'échec du système.

Ce système de communication par message est par exemple fourni par des logiciels (appelés également intergiciel orienté message) comme WebSphere MQ de IBM (anciennement MQ Series), MSMQ (en) de Microsoft, Oracle Advanced Queuing (en) avec Oracle database. Comme souvent pour les intergiciels, Java propose uniquement un standard nommé Java Message Service dont il existe des implémentations propriétaires ou libres. Des projets open source existent également, comme RabbitMQ qui est un logiciel libre avec une licence de type Mozilla Public License.

Utilisation

Dans une implémentation typique de file de messages, un administrateur système installerait et configurerait l'intergiciel orienté message (gestionnaire de files d'attente), puis définirait l'identifiant pour chaque file d'attente de messages.

Une application pourrait alors s'enregistrer pour « écouter » des messages placés sur cette file d'attente.

Une autre application se connecterait Ă  cette file d'attente et enverrait un message.

Le 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 pourrait alors traiter ce message de façon appropriée.

De nombreux choix ont une influence sur la façon précise de passer les messages comme :

  • Persistance : les donnĂ©es envoyĂ©es peuvent ĂŞtre simplement gardĂ©es en mĂ©moire ou si elles ne doivent pas ĂŞtre perdues mĂŞme en cas d'Ă©chec système seront stockĂ©es dans un fichier voire une base de donnĂ©es.
  • SĂ©curitĂ© : les messages et l'accès aux files de messages peuvent ĂŞtre protĂ©gĂ©s.
  • Filtrage de messages : certains systèmes permettent Ă  une application de fournir des critères pour ne recevoir que certains messages.
  • StratĂ©gie de livraison : faut-il garantir que chaque message envoyĂ© est reçu au moins une fois ou plutĂ´t jamais plus qu'une fois ?
  • StratĂ©gie de routage : dans un système composĂ© de multiples serveurs, quel serveur s'occupera de quelle file de messages ?
  • StratĂ©gie de groupage : faut il traiter chaque message individuellement ou est-il prĂ©fĂ©rable de les regrouper pour diminuer le nombre d'Ă©changes ?
  • Ă€ quel moment un message est-il considĂ©rĂ© comme envoyĂ© ? Quand l'application l'a postĂ© ? Dès qu'une file de rĂ©ception l'a ? Toutes les files de rĂ©ception ?
  • Faut-il prĂ©venir l'envoyeur que son message a Ă©tĂ© reçu ? Par tous les destinataires ?

Ces considérations ont un impact sur la sémantique d'envoi et de réception, la fiabilité et les performances du système complet.

Synchrone ou asynchrone

Plusieurs protocoles de transmission largement répandus, sont synchrones de nature. L'exemple le plus connu 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 c'est 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 n'a pas besoin de réponse. Un autre exemple est dans le cas des modèles en publicateurs/abonnés, où une application publicatrice « poste » une information. Dans ces deux exemples il ne serait pas acceptable pour l'expéditeur de l'information de devoir attendre la réponse si un destinataire ne répond plus.

À l'opposé, une application interactive aura besoin de répondre immédiatement à une sollicitation (par exemple pour prévenir un client que son paiement est accepté et que le stock est prévenu de sa commande) et pourra mettre en file d'attente d'autres demandes d'actions (envoi de la facture à la comptabilité, etc.) Dans ce type d'utilisation, faire la part entre les traitements synchrones et asynchrones peut améliorer le comportement du système.

Annexes

Articles connexes

Liens externes

Produits commerciaux
Produits libres
Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.