IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Introduction à JMS et son intégration dans Spring

Date de publication : 05 juin 2008

Par Gildas Cuisinier (Hikage.be) (Blog)
 


I. Introduction
Qu'est-ce que JMS ?
Faible Couplage
Asynchrone
Persistant
Transactionel
Présentation technique de JMS
Quelques définitions
Le provider JMS
Client JMS
Message JMS
Les différents modèles de communications (
L'API JMS
Petit exemple
II. JMS avec Spring Framework
L'API Spring pour JMS
Exemple pratique
Etude de cas
Installation de ActiveMQ
Configuration Spring : ConnectionFactory et Queues
Création du producteur
Création du récepteur
Test
Amélioration 1 : Gestion de la persistance des messages
Amélioration 2 : Gestion des transactions locales
Amélioration 3 : Ajout d'un acquitement applicatif
III. Conclusion


I. Introduction


Qu'est-ce que JMS ?

JMS ( pour Java Messaging System ) est l'implémentation Java de ce qui est appellé MOM.

info MOM, ou Message-Oriented Middleware
Un MOM est une plateforme logicielle fournissant un moyen de communication entre divers applications, sans que celles-ci soient consciente de l'existence de l'autres.
Le principe est qu'une application ne communique pas directement avec l'autre, mais dépose son "message" dans le MOM. L'autre application de son coté, viendra simplement vérifier l'arrivée de message sur le MOM.

Quels sont les avantages d'une communication JMS par rapport à une communication de type TCP ou Corba ?


Faible Couplage

Pour communiquer, la seule chose qui est nécessaire à deux applications, c'est d'avoir un message compréhensible par les deux cotés, et un serveur JMS commun. Pas besoin de connaitre l'adresse de l'autre, pas besoin de stub pour accèder au service de l'autre.

Intérêt : Si l'application réceptrice est modifiée, déplacée ou remplacée, cela reste complètement transparent du point de vue de l'émetteur


Asynchrone

JMS est un protocole asynchrone, ce qui veut dire que l'application émettrice émet son message, et continue son traitement sans attendre que le récepteur confirme l'arrivée du message.
De son coté, le récepteur récupère les messages quand il le souhaite.

Intérêt : Si l'application réceptrice effectue une tâche longue, l'émetteur n'est pas bloqué


Persistant

JMS propose un mode persistant, c'est à dire que les messages sur une Queue/Topic ( envoyé par un émetteur et non encore consommé par un client ) sont stocké de manière persistance ( disque, base de données, ... ).
Ce qui assure une garantie de livraison du message, même si le serveur JMS devait être arrêté ( maintenance, plantage, ... ).

Intérêt : Assurance que le message ne sera pas perdu et arrivera bien au client


Transactionel

Une communication JMS peut être comprise dans une transaction, locale ou globale ( via JTA/XA ).
Imaginons qu'une demande d'abonnement est réalisée via JMS, le client reçoit le message, commence le traitement mais une exception est levée. Le message JMS bien que lu par le client n'a pas été consommé et il est remis sur la queue et sera relu plus tard pour une nouvel essai.

Intérêt : Pas de perte de messages en cas de problème dans l'application


Présentation technique de JMS


Quelques définitions

Dans une architecture de communication, il y a plusieurs intervenants et composants qui interviennent.


Le provider JMS

JMS est l'API Standard définie par Sun, il faut donc une implémentation concrête de celle-ci pour pouvoir réellement communiquer en JMS.
Un Provider JMS est donc une implémentation l'interface JMS.

Voici une liste ( non exaustive ) de provider JMS :

Implémentation Licence Description
Apache ActiveMQ OpenSource - Apache 2.0 License Une des implémentations OpenSource les plus populaire
Site officiel
OpenJMS OpenSource Site du projet
JBoss Messaging OpenSource Implementation du serveur JBoss, remplacant de JBossMQ
Site officiel
Joram OpenSource - LGPL license Site officiel
WebShere MQ - IBM Commercial Implémentation JMS de IBM
Site officiel
Sonic MQ Commercial Site officiel
Oracle Advanced Queueing Commercial  
TIBCO Enterprise Message Service Commercial Site officiel
Sun Java System Message Queue Commercial Site officiel

Client JMS

Les clients JMS sont les applications qui utilise JMS pour communiquer, elle sont de deux types :

  • Producteur : Client qui crée et envoie des messages
  • Consomateur : Client qui reçoit des messages

Message JMS

Un message JMS est la structure qui transite dans une communication JMS. Il est composé de plusieurs parties :

Structure d'un message JMS En-têtes : Divers informations d'ordre technique du message : identifiant, identifiant de correlation, priorité, durée de validité
Propriétés : Information de type "clé -> valeurs" qui peuvent être ajouter par l'application pour apporter des précision du le message
Corps du message : Données métiers du message

Les différents modèles de communications

(

L'API JMS


Petit exemple


II. JMS avec Spring Framework


L'API Spring pour JMS


Exemple pratique


Etude de cas


Installation de ActiveMQ


Configuration Spring : ConnectionFactory et Queues


Création du producteur


public class test{

}

Création du récepteur


Test


Amélioration 1 : Gestion de la persistance des messages


Amélioration 2 : Gestion des transactions locales


Amélioration 3 : Ajout d'un acquitement applicatif


III. Conclusion



Valid XHTML 1.1!Valid CSS!

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2008 Gildas Cuisinier. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.