Question

Dans MQ, si vous avez une instance d'un gestionnaire de file d'attente existant, disons que QueueManager1 auquel votre application a accès. Vous pouvez envoyer votre message en créant une file d'attente qui pointe vers une file d'attente d'un autre gestionnaire de file d'attente, QueueManager2, via QueueManager1. Cela se fait parce que l'application n'a peut-être pas un accès direct à la QueueManager2, mais le MQ Server Hosting QueuManager1.

Le code ressemble à ceci:

Mqqueue destqueue = queueManager1.AccessQueue ("Quefromanothermngr", cmqc.mqoo_output | cmqc.mqoo_fail_if_quiescing, "QueueManager2", null, null);

Je refactorise le code pour utiliser l'adaptateur IBM MQ JCA pour JBoss AS 6. Donc je crois que je dois m'en tenir à l'API JMS Vanilla (en utilisant InitialContext JNDI Lookup, Product, etc.) Pour gérer mes connexions par JBoss.

Cependant, je ne peux pas comprendre comment, en JMS, pour permettre au serveur MQ récepteur de transmettre mon message dans une autre file d'attente d'un autre queuManager (QueueManager2).

D'après ce que j'ai fait des recherches jusqu'à présent, il y a un objet envoyé à MQ appelé le descripteur de messages de messages (MQMD) et il a un champ appelé "Répondretoqmgr" et "Répondretoq". Je pense que si je trouve un moyen de mettre à jour ces champs à l'aide de l'API JMS avec le JCA ADPATAT, j'ai ma solution. Des pensées? Idées? Suggestions? Solutions? Merci!

Était-ce utile?

La solution

Les champs Répondreto permettent à l'application distante de vous remédier aux messages. Ils ne sont pas utilisés par WebSphere MQ dans l'acheminement du message d'origine mais sont utilisés pour traiter les remerciements et les rapports d'échec.

La façon dont vous spécifiez une file d'attente sur un QMGR distant à l'aide de recherches JNDI est de définir le QMNAME champ dans l'objet de file d'attente. S'il te plait regarde Propriétés des classes WebSphere MQ pour les objets JMS Pour une liste de toutes les propriétés prises en charge par les objets WebSphere MQ. Ce qui n'est pas mentionné dans le tableau supérieur, c'est que le QMNAME la propriété d'une file d'attente ne doit pas correspondre au QMNAME propriété de l'usine de connexion. Lorsque ces propriétés diffèrent, le QMGR local tentera de résoudre un chemin vers le QMGR cible lorsque l'objet de file d'attente est ouvert. Tant qu'il peut trouver un chemin (soit une file d'attente de transmission, soit un alias QMGR doit exister avec le même nom que le QMGR cible) et tant que votre application est autorisée à la file d'attente de transmission, vous êtes prêt à partir.

Notez que si vous obtenez une exception JMS, vous devoir Renseignez-vous pour l'existence et imprimez toutes les exceptions liées que vous trouvez. Ceux-ci auront le code de raison WMQ qui vous dira ou l'administrateur si des problèmes sont liés à la résolution, à l'autorisation ou à l'autre. S'il te plait regarde Exceptions dans les classes WebSphere MQ pour JMS Pour des suggestions sur la façon de procéder. Notez que ce ne sont pas des conseils spécifiques à la WMQ. JMS spécifie une structure à plusieurs niveaux pour la déclaration des exceptions et l'exception liée est l'endroit où des erreurs spécifiques au fournisseur sont signalées. Alors n'importe quel L'application JMS, quel que soit le fournisseur de transport utilisé, devrait imprimer des exceptions liées.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top