JMS, les bases

 

 
Je vous fait un panorama des notions incontournables nécessaires au développement d’application utilisant JMS.

 

Acquittement de messages

Un message est considéré comme reçu par le destinataire que lorsque ce dernier en a acquitté la réception.

L’acquittement intervient lorsque :
– le serveur reçoit un message à diffuser, il en acquitte la bonne réception à l’expéditeur,
– le récepteur reçoit un message diffusé, il en acquitte la bonne réception au serveur.

En mode Point à Point, tant qu’un message n’est pas acquitté, il reste stocké par le MOM. Il sera redistribué lorsque le destinataire accédera de nouveau à la file.

En mode Publisher-Subscriber, un message non acquitté se perd avec la session sauf en cas de souscription durable du destinataire.

Cet acquittement peut être automatique (par défaut) ou explicite.

 

Persistance

Les messages peuvent être persistants ou non persistants. Cette persistance est assurée par le MOM.
Intérêt : la persistance permet d’assurer la survie du message en cas de défaillance ou d’arrêt du MOM.
Inconvénient : la persistance se fait au détriment des performances.

Ce qu’il faut savoir :
– le mode par défaut est le mode persistant,
– un message persiste sur le MOM tant que le destinataire ne lui a pas indiqué sa bonne réception (accusé de réception automatique ou manuel)

 

Durabilité

La durabilité est un mode fonctionnement qui permet à l’abonné de recevoir les messages même s’il n’est pas actif. La durabilité n’est valable qu’en mode Publish-Subscribe.

Non durable

– la durée de vie des messages est limitée à la durée de vie du subscriber (récepteur),
– si un subscriber est inactif ou est déconnecté, tous les messages publiés en son absence ne lui seront pas délivrés.

Durable

Si un subscriber est inactif ou est déconnecté au moment de la diffusion d’un message, celui-ci lui sera délivré dès qu’il sera actif.

 

Priorité

Il est possible de spécifier la priorité d’un message (méthode setPriority(int)). Cette priorité varie de 0 (moins prioritaire) à 9 (plus prioritaire). Le MOM traite (délivre) donc les messages selon cet ordre de priorité. Toutefois, il peut arriver que cet ordre ne soit pas scrupuleusement respecté.

 

Expiration

Un message n’expire jamais. Il est toutefois possible de lui fixer une durée de vie (méthode setTimeToLive(long time)). Un message non délivré avant sa durée d’expiration est détruit.

 

Synchrone – Asynchrone

La réception de message peut se faire de manière synchrone ou asynchrone.

A l’inverse de la réception asynchrone, la réception synchrone est bloquante pour le composant récepteur jusqu’à l’obtention du message ou jusqu’à expiration d’une durée limitée (timeout).

 

Transaction

L’envoi et la réception de messages peut se faire sur un mode transactionnel : on groupe l’envoi d’une série de messages dans une transaction.
Chaque transaction est validée, ou peut être invalidée si un problème survient sur un des messages de la transaction. Un même transaction ne groupe que des envois ou que des réceptions.

 

Posté dans javaTaggé ActiveMQ, Broker de messages, Développement, java, JMS, JMS Tutorial  |  Laisser un commentaire

Répondre