Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

18.9.4. Groupement clusterisé

Un regroupement clusterisé suit une approche différente du groupement de messages normal. Dans un cluster, les groupes de messages avec des id de groupe spécifiques peuvent arriver sur n'importe quel nœud. Il est important pour un nœud de déterminer quels identifiants de groupes sont liés aux consommateurs et sur quel noeud. Chaque nœud est responsable de diriger les groupes de messages correctement vers le nœud qui possède le consommateur qui traite ces ID de groupes quel que soit l'endroit où les groupes de messages arrivent par défaut.
Cette situation a été corrigée par un handler de groupement. Chaque nœud possède un handler de groupement et ce gestionnaire de groupement (avec d'autres handlers) est responsable de l'acheminement des groupes de messages vers le nœud qui convient. Il existe deux types de regroupement des handlers, à savoir local (local) et remote (distant).
Le handler local est chargé de décider du chemin qu'un groupe de messages doit prendre. Les handlers distants communiquent avec le handler local et fonctionnent ainsi. Chaque cluster doit choisir un nœud spécifique pour avoir un handler de groupement local et tous les autres nœuds doivent avoir des handlers distants.

Avertissement

Si le regroupement de messages est utilisée dans le cluster, le processus s'interrompt en cas d'échec du gestionnaire de groupement distant configuré. Créer une sauvegarde pour un gestionnaire de groupement distant ne fonctionne pas non plus.
Vous pouvez configurer les handlers de groupements "local" et "remote" dans les fichiers de configuration du serveur (standalone.xml et domain.xml) comme suit :
<grouping-handler name="my-grouping-handler">
   <type>LOCAL</type>
   <address>jms</address>
   <timeout>5000</timeout>
</grouping-handler>

<grouping-handler name="my-grouping-handler">
   <type>REMOTE</type>
   <address>jms</address>
   <timeout>5000</timeout>
</grouping-handler>
L'attribut « timeout » veille à ce qu'une décision de routage soit faite rapidement dans un délai imparti. Si une décision n'est pas faite dans ce délai, une exception sera levée.
Le nœud qui commence par recevoir un groupe de messages prend la décision de routage selon les conditions de routage de cluster ordinaire (disponibilité de la file d'attente de round robin). Le nœud propose cette décision au handler de groupement respectif, qui achemine ensuite les messages vers la file d'attente proposée, s'il accepte la proposition.
Si le handler de groupement rejette la proposition, il proposera un autre itinéraire et le routage aura lieu en conséquence. Les autres nœuds suivront et renverront les groupes de messages dans la file d'attente choisie. Après l'arrivée d'un message dans une file d'attente, ce message sera alloué à un client sur cette file d'attente.