Connexion d'un bean géré par message dans un cluster
Lorsqu'une application EJB (bean enterprise) est déployée dans un cluster de serveurs d'applications, elle peut être exécutée sur n'importe quels serveurs du cluster pour permettre la haute disponibilité et l'évolutivité de l'application. Lorsque l'application EJB correspond à un bean géré par message (MDB), elle peut être exécutée sur n'importe quels serveurs du cluster (pour la haute disponibilité) et être appelée simultanément sur plusieurs serveurs d'applications du cluster (pour l'évolutivité). Ce comportement dépend de l'emplacement du bean géré par message par rapport aux membres du bus d'intégration de services et de la configuration du bean géré par message lui-même.
Par défaut, lorsqu'une application de bean géré par message est déployée dans un cluster de serveurs d'applications qui est également un membre de bus du cluster du bus d'intégration de services, elle se connecte à un ou plusieurs moteurs de messagerie des serveurs du cluster. Le comportement de connexion par défaut et le contrôle supplémentaire de la connexion que vous pouvez appliquer à toute application JMS comportant des beans gérés par message sont décrits dans la rubrique Connexion des applications JMS à un moteur de messagerie d'un bus. Toutefois, si vous utilisez les options de configuration de cette rubrique, le bean géré par message est géré uniquement sur les serveurs du cluster qui hébergent un moteur de messagerie démarré.
- Tous les serveurs du cluster peuvent recevoir des messages d'une application de beans gérés par messages pour tirer pleinement parti de la puissance de traitement du cluster.
- Un seul serveur à la fois peut recevoir les messages de l'application de beans gérés par message pour assurer le traitement séquentiel des messages.
- Comportement de connexion du bean géré par message : dans un seul membre de bus du cluster
- Comportement de connexion du bean géré par message : entre un cluster et un membre de bus distinct

Comportement de connexion du bean géré par message : dans un seul membre de bus du cluster
- Le bean géré par message est uniquement géré sur les serveurs du membre de bus du cluster qui hébergent un moteur de messagerie démarré
Il s'agit de l'option par défaut. Si le bean géré par message est déployé sur un membre de bus de cluster, seuls les noeuds finaux du bean géré par message se trouvant sur les serveurs possédant un moteur de messagerie démarré en local peuvent être gérés par les messages disponibles.
Dans la figure 2, un membre de bus du cluster contient trois serveurs. server1 et server2 contiennent chacun un moteur de messagerie actif et de basculement. Les noeuds finaux du bean géré par message s'exécutant sur ces deux serveurs se connectent à leurs moteurs de messageries locaux respectifs. server3 n'héberge pas un moteur de messagerie démarré, mais il contient deux moteurs de messagerie de basculement. Il ne dispose pas d'un noeud final MDB actif et il ne peut pas consommer des messages.
Figure 2. Le bean MDB est géré par les serveurs dans le membre du bus du cluster qui héberge le moteur de messagerie (configuration 1)Cette configuration offre également une fonction de haute disponibilité de l'application de bean géré par message et des messages de la destination du bus, si le moteur de messagerie peut basculer entre les serveurs du cluster.
La figure 3 montre également le membre du bus du cluster de la figure précédente. Le moteur de messagerie de server1 a basculé sur server2. Par conséquent, server2 contient maintenant deux moteurs de messagerie actifs et le noeud final MDB exécuté dans server2 se connecte aux deux moteurs de messagerie locaux. Le troisième serveur n'héberge pas de moteur de messagerie démarré, ne possède pas de noeud final de bean géré par message actif et ne peut pas utiliser les messages.
Figure 3. Le bean MDB est géré par les serveurs dans le membre du bus du cluster qui héberge un moteur de message démarré (configuration 2)Cette configuration est activée si vous ne sélectionnez pas l'option Toujours activer les beans MDB dans tous les serveurs de la spécification activation.
- Tous les serveurs d'un membre de bus du cluster peuvent recevoir des messages provenant d'un bean géré par message
Vous pouvez définir les noeuds finaux MDB dans tous les serveurs du cluster comme pouvant être gérés par messages, qu'il existe ou non un moteur de messagerie démarré local. Tout noeud final de bean géré par message d'un serveur sur lequel aucun moteur de messagerie n'est démarré se connecte directement à l'un des moteurs de messagerie de l'un des serveurs du cluster. Avec cette approche, toutes les ressources disponibles du cluster peuvent être utilisées pour traiter les messages envoyés aux destinations.
Dans la figure 4, un membre du bus du cluster contient trois serveurs. Deux serveurs contiennent des moteurs de messagerie actifs. Les noeuds finaux MDB dans chacun de ces deux serveurs se connectent à leurs moteurs de messagerie locaux respectifs. La charge de travail du troisième serveur, qui n'héberge pas de moteur de messagerie démarré, est répartie entre les moteurs de messagerie disponibles dans le cluster. Le noeud final MDB dans le troisième serveur est connecté à un moteur de messagerie exécuté dans l'un des deux autres serveurs.
Figure 4. Les serveurs dans un membre du bus du cluster reçoivent les messages d'un bean géré par message.Pour choisir cette configuration, vous sélectionnez l'option Toujours activer les beans MDB dans tous les serveurs dans la spécification d'activation.
Remarque : Cette configuration permet d'obtenir les mêmes effets (pour déterminer quels noeuds finaux de bean géré par message sont pilotés) que la configuration suivante (également décrit dans cette rubrique) : Tous les serveurs d'un cluster peuvent recevoir des messages provenant des moteurs de messagerie d'un membre de bus du cluster.
Comportement de connexion du bean géré par message : entre un cluster et un membre de bus distinct
- Tous les serveurs d'un cluster peuvent recevoir des messages de moteurs de messagerie d'un membre de bus du cluster
Si vous déployez l'application de bean géré par message sur un cluster qui n'est pas un membre de bus, le bean géré par message tente de se connecter au bus à partir de chacun des serveurs d'applications du cluster, en respectant les règles de connexion décrites dans Connexion des applications JMS à un moteur de messagerie d'un bus. Ainsi, généralement, tous les noeuds finaux de bean géré par message du cluster sont pilotés simultanément par les messages d'un moteur de messagerie actif du membre de bus. Avec cette approche, toutes les ressources disponibles du cluster peuvent être utilisées pour traiter les messages envoyés aux destinations du membre de bus du cluster.
Dans la figure 5, un cluster contient trois serveurs ayant chacun un noeud final MDB. Un membre du bus du cluster contient deux serveurs et l'un d'entre eux héberge un moteur de messagerie actif. Chacun des trois noeuds finaux MDB du cluster se connecte au moteur de messagerie d'actif dans le membre du bus du cluster.
Remarque : Dans cette configuration, des connexions peuvent ne pas être établies à tous les moteurs de messagerie. Par conséquent, il peut exister un moteur de messagerie sans connexion, ce qui peut se traduire par des messages inaccessibles. Cette situation est peu vraisemblable si la spécification d'activation utilisée par MDB est la portée de serveur.Figure 5. Tous les serveurs dans le cluster reçoivent les messages des moteurs de messagerie dans un membre du bus du clusterRemarque : Cette configuration permet d'obtenir les mêmes effets (pour déterminer quels noeuds finaux de bean géré par message sont pilotés) que la configuration suivante (également décrit dans cette rubrique) : Tous les serveurs d'un membre de bus du cluster peuvent recevoir des messages provenant d'un bean géré par message.- Un seul serveur d'un cluster peut recevoir des messages provenant d'un moteur de messagerie d'un membre de bus du cluster
Pour le traitement séquentiel des messages sur la destination par un seul serveur à la fois, configurez le système de sorte qu'à tout moment, un seul noeud final de bean géré par message ne soit géré par des messages. Dans ce cas, les autres noeuds finaux du bean géré par message et le moteur de messagerie sont en veille, prêts à reprendre le traitement des messages si server1 s'arrête.
Dans la figure 6, un cluster contient trois serveurs ayant un noeud final de bean géré par message. Un membre du bus du cluster contient également deux serveurs, l'un d'entre eux ayant un moteur de messagerie actif. Un seul des trois noeuds finaux du bean géré par message du cluster est connecté au moteur de messagerie actif s'exécutant dans le membre de bus du cluster.
Figure 6. Serveur recevant les messages d'un moteur de messagerie dans un membre du bus du clusterPour choisir cette configuration, vous configurez la spécification d'activation pour que les noeuds finaux du bean géré par message dans tous les serveurs de cluster non-bus peuvent être gérés par les messages depuis un moteur de messagerie dans le membre du bus du cluster et définissez l'option de réception exclusive dans la destination dans le membre du bus du cluster. Lorsque l'un des noeuds finaux du bean géré par message se connecte au moteur de messagerie, ce dernier empêche tous les autres noeuds finaux logiques du bean géré par message de se connecter et poursuit le traitement des messages par l'intermédiaire du même noeud final du bean géré par message.
Pour le traitement séquentiel des messages par un bean géré par message, une configuration supplémentaire peut être requise. Pour plus d'informations relatives au traitement séquentiel des messages sur une destination, voir Ordre des messages.