Concept: Messagerie (JMS)
Ces instructions fournissent une vue d'ensemble détaillée du système de messagerie Java (JMS).
Relations
Eléments connexes
Description principale

Introduction

Le système de messagerie Java, JMS, fournit une plateforme standard pour la communication asynchrone des données métier et des événements au sein de l'entreprise. La communication se fait habituellement au moyen de processus et de machines. Les objets dans les applications habituellement en cours de fonctionnement sur différentes machines, communiquent en accédant aux services du middleware orienté message (MOM) grâce à un ensemble standard d'interfaces défini par JMS.

Diagramme décrit dans le texte d'accompagnement.

JMS fournit un ensemble d'interfaces qui isole le programmeur Java (implémentant les fournisseurs et consommateurs de messages) des fournisseurs MOM.

Cette page décrit les concepts clés et l'utilisation habituelle de JMS.

Messages

Un message est un package autonome de données métier. Il comporte trois compartiments :

  • En-tête : contient des informations sur l'acheminement des données et des identificateurs de message.
  • Propriétés : contient des métadonnées pour le message. JMS détermine certaines propriétés mais les programmeurs d'application peuvent également ajouter leurs propres propriétés.
  • Données utiles : contient les données métier réelles. Les données utiles sont entièrement contrôlées par le programmeur d'application.

Diagramme décrit dans le texte d'accompagnement.

Dans JMS, le message est encapsulé dans un objet qui implémente l'interface javax.jms.Message. Un programme Java peut accéder aux compartiments par cette interface, comme le montre le diagramme suivant. Les données utiles se déclinent en plusieurs variations ; celles-ci sont décrites plus loin.

Diagramme décrit dans le texte d'accompagnement.

L'en-tête contient les propriétés du message qui doivent toujours être là. Les propriétés suivantes sont disponibles pour l'en-tête :

  • Identificateur de message
  • Horodatage
  • Identificateur de corrélation
  • Répondre à
  • Destination
  • Mode de livraison
  • Redélivré
  • Type
  • Expiration
  • Priorité

Les propriétés peuvent être utilisées par le programmeur d'application pour fournir les métadonnées pour le message. Les propriétés consistent en un ensemble arbitraire de paires nom/valeur.

Il existe six types de données utiles prises en charge par JMS :

  • Messages de texte
  • Messages d'objet
  • Messages d'octets
  • Messages de mappe
  • Messages de flux
  • Message (sans corps)

Les types de données utiles se reflètent dans la hiérarchie de classes où les interfaces étendent javax.jms.Message. Dans le diagramme de classes suivant, nous présentons les messages de texte, d'objet et d'octets qui sont souvent utilisés. Les messages de texte sont généralement les porteurs des données XML.

Diagramme décrit dans le texte d'accompagnement.

Destinations

JMS définit le concept d'une destination. Les messages sont envoyés aux destinations et proviennent des destinations. Les destinations peuvent prendre deux formes :

  • Files d'attente
  • Rubriques

Les files d'attente représentent des destinations de messages utilisées lorsque les messages sont traités uniquement par un récepteur. Considérant que les messages sont comparables au courrier ordinaire, les files d'attente sont des boîtes aux lettres appartenant à un destinataire particulier. Le communication utilisant les files d'attente est appelée communication point à point.

Les rubriques représentent des destinations de message, utilisées lorsque les messages ont besoin d'être réceptionnés par des récepteurs multiples ; chacun d'entre eux manifeste un intérêt dans la réception d'un type particulier de message. Pour poursuivre la comparaison avec le courrier ordinaire, c'est comme écrire un article dans un journal ; un message est lu par un certain nombre de récepteurs. Nous appelons souvent ce type de conception, modèle publish-and-subscribe.

Livraison des messages

La livraison des messages peut être réalisée de deux manières :

  • Persistante
  • Non persistante

La livraison persistante comprend le stockage du message dans un fichier ou une base de données permettant ainsi de garantir la livraison. La livraison non persistante améliore la performance et réduit le temps système de stockage, mais elle ne garantit pas la livraison du message. Pour la plupart des applications utilisant JMS, la livraison persistante est la plus employée.

Clients JMS

Les clients JMS sont les objets Java qui utilisent JMS. Il existe deux rôles :

  • Producteurs de message : programmes Java qui créent et envoient des messages.
  • Consommateurs de message : programmes Java qui reçoivent des messages.

La diagramme suivant est une vue d'ensemble présentant la manière dont le producteur, les consommateurs et les fournisseurs JMS collaborent.

Diagramme décrit dans le texte d'accompagnement.

Un producteur de messages peut être n'importe quelle classe Java ayant accès à une implémentation JMS. Les producteurs de message créent et envoient des messages.

Un consommateur de message peut être n'importe quelle classe Java ayant accès à une implémentation JMS. Les consommateurs de message reçoivent et traitent les messages.

Un client JMS utilise un ensemble d'interfaces pour accéder à JMS. Les objets qui implémentent les interfaces JMS sont créés grâce à un ensemble de fabriques. La fabrique initiale est ConnectionFactory (Fabrique de connexions). La fabrique de connexions est optimisée grâce à JNDI. Le client JMS utilise la fabrique de connexions pour créer un objet de connexion. L'objet de connexion est utilisé pour créer un objet de session, et utilisé comme fabrique pour les autres objets JMS. La figure suivante illustre les relations conceptuelles clés entre les fabriques, sans rentrer dans les détails des files d'attente et des rubriques.

Diagramme décrit dans le texte d'accompagnement.

Les fabriques de connexion, les connexions et les sessions prennent deux formes : une pour les files d'attente (queue) et une autre pour les rubriques (topic). Le diagramme des classes ci-dessous montre la hiérarchie d'interface pour les concepts JMS clés.

Diagramme décrit dans le texte d'accompagnement.

Fournisseurs JMS

Un fournisseur JMS est une implémentation qui est conforme à la spécification JMS. Le fournisseur JMS a la responsabilité de recevoir, conserver et délivrer des messages.

Plus d'informations

Pour plus d'informations, reportez-vous à http://java.sun.com/products/jms/.