Pour compléter la réponse de Shashi, pour tirer le meilleur parti de la mise en grappe de WMQ, vous devez disposer d'un saut de réseau entre les émetteurs et les récepteurs de messages. Le clustering WMQ concerne la façon dont les QMgrs parlent entre eux. Il n'a rien à voir avec la façon dont les applications clientes parlent à QMgrs et ne réplique pas les messages. Dans un cluster, lorsqu'un message doit aller d'un QMgr à un autre, le cluster détermine où l'acheminer. S'il existe plusieurs instances en cluster d'une même file d'attente de destination, le message peut être acheminé vers n'importe laquelle d'entre elles. S'il n'y a pas de saut de réseau entre les expéditeurs et les récepteurs, alors les messages n'ont pas besoin de quitter le QMgr local et donc le comportement de clustering de WMQ n'est jamais invoqué, même si les QMgrs impliqués peuvent participer au cluster.
Dans une architecture classique de cluster WMQ, les récepteurs écoutent tous plusieurs instances de la même file d'attente, avec le même nom, réparties sur plusieurs QMgr. Les expéditeurs ont un ou plusieurs QMgrs où ils peuvent se connecter et envoyer des requêtes (fire-and-forget), en attendant éventuellement des réponses (request-reply). Puisque les récepteurs des messages fournissent un certain service, j'appelle leurs QMgrs "QMgrs de fournisseur de services". Les QMgrs où vivent les expéditeurs de messages sont des QMgrs "consommateurs de services" car ces applications sont des consommateurs de services.
La diapositive ci-dessous est tirée d'une présentation que j'utilise dans le cadre de mes missions de conseil en architecture WMQ.
Notez que les consommateurs de services, c'est-à-dire les personnes qui envoient des messages de demande, ne sont pas pris en compte. Les éléments qui écoutent les files d'attente des points de terminaison des services et qui fournissent des services ne basculent PAS. Ceci est dû à la nécessité de s'assurer que chaque file d'attente active de point de terminaison de service est toujours servie. Typiquement, chaque instance d'application détient un handle d'entrée sur deux ou plusieurs instances de file d'attente. De cette façon, un QMgr peut tomber en panne et toutes les instances d'application restent actives. Si une instance d'application tombe en panne, une autre instance d'application continue à servir ses files d'attente. Cette affinité des fournisseurs de services avec des QMgr spécifiques permet également la transactionnalité XA si nécessaire.
Le meilleur moyen que j'ai trouvé pour expliquer WMQ HA est une diapositive de la conférence IMPACT :
Un cluster WebSphere MQ garantit qu'un service reste disponible, même si une instance d'une file d'attente en cluster peut être indisponible. Les nouveaux messages dans le cluster seront acheminés vers les instances de file d'attente restantes. Un cluster matériel ou un QMgr multi-instance (MIQM) permet d'accéder aux messages existants. Lorsqu'un côté de la paire active/passive tombe en panne, il y a une brève interruption de service. sur ce QMgr uniquement pendant que le basculement se produit, le nœud secondaire prend le relais et rend à nouveau disponibles tous les messages se trouvant dans les files d'attente. Un réseau qui combine à la fois des clusters WMQ et des clusters matériels/MIQM offre le plus haut niveau de disponibilité.
Gardez à l'esprit que dans aucune de ces configurations, les messages ne sont répliqués entre les nœuds. Un message WMQ a toujours un seul emplacement physique. Pour en savoir plus sur cet aspect, veuillez consulter Réflexions sur la reprise après sinistre .