Méthode createQueue ou createTopic et le fournisseur de messagerie par défaut
Vous pouvez utiliser la méthode Session.createQueue(String) ou Session.createTopic(String) au lieu d'une recherche JNDI pour créer une file d'attente ou un sujet JMS à l'aide du fournisseur de messagerie par défaut.
Queue q = mySession.createQueue("Q1");
crée une instance
de file d'attente JMS permettant de référencer la destination existante Q1.Dans le cas du fournisseur de messagerie par défaut, la destination existante correspond à une file d'attente ou à un espace de sujet sur le bus auquel la session est connectée.
createQueue
La méthode Session.createQueue(String) permet de créer un objet de file d'attente JMS représentant une destination existante. Il s'agit d'une autre approche possible, cependant moins facile à gérer, pour obtenir des objets de file d'attente JMS définis par le système par une recherche JNDI.
- Format simple
- Dans son format le plus simple, le paramètre de la méthode createQueue correspond au nom d'une destination existante sur le bus auquel la session est connectée. Par
exemple, s'il existe une file d'attente intitulée Q1, la méthode suivante permet de créer
une instance de file d'attente JMS permettant de référencer cette destination :
Queue q = mySession.createQueue("Q1");
- Format d'URI
- Dans les cas plus complexes, les applications peuvent utiliser un format d'URI. Le format d'URI permet de fournir un nombre arbitraire de paires nom/valeur pour définir diverses propriétés de l'objet File d'attente.
L'URI de file d'attente est identifié par le
préfixe queue://, suivi du nom de la file d'attente. Pour Q1, le format simple indiqué précédemment peut être exprimé par l'URI suivant :
Queue q = mySession.createQueue("queue://Q1");
Les paires nom/valeur sont précédées d'un point d'interrogation ?. Par exemple, une application peut connecter une session à un bus, puis utiliser le format suivant pour créer une instance de file d'attente JMS pour Q2 sur un autre bus, appelé otherBus :
Lors de l'envoi de messages à IBM MQ, un signe (@) et le nom du gestionnaire de files d'attente doivent être placés après le nom de la file d'attente, par exemple :Queue q = mySession.createQueue("queue://Q2?busName=otherBus");
Queue q = mySession.createQueue("queue://Q2@qmgr?busName=otherBus");
Les paires nom/valeur multiples sont séparées par un perluète &. Par exemple :Queue q = mySession.createQueue("queue://Q2?busName=otherBus&deliveryMode= Application&readAhead=AsConnection&priority=6");
- Propriétés
- busName, deliveryMode, priority, readAhead et timeToLive. Pour une description de ces propriétés, voir les informations de l'API générée.
createTopic
La méthode Session.createTopic(String) permet de créer un objet de sujet JMS représentant une destination existante. (Notez que pour les sujets, c'est l'espace de sujet et non le sujet qui doit exister.) Il s'agit d'une autre approche possible, cependant moins facile à gérer, pour obtenir des objets de sujet JMS définis par le système par une recherche JNDI.
- Format simple
- Dans son format le plus simple, le paramètre de la méthode createTopic correspond au
nom d'un sujet de l'espace de sujet par défaut sur le bus auquel la session est connectée. Par exemple, si l'espace de sujet par défaut existe, une instance de
sujet JMS peut être utilisée pour faire référence au sujet cats dans
l'espace de sujet par défaut :
Topic t = mySession.createTopic("cats");
Pour spécifier un espace de sujet autre que celui par défaut, il est possible d'utiliser une syntaxe spéciale de la forme topicSpace:topic. Exemple :Topic t = mySession.createTopic("kennelTopicSpace:dogs");
- Format d'URI
- Dans des situations plus complexes, il est possible d'utiliser un format d'URI. L'URI
de sujet est identifié par le préfixe topic:// suivi du nom du sujet. Les exemples précédents peuvent être exprimés sous la forme des URI suivants :
Topic t = mySession.createTopic("topic://cats"); Topic t = mySession.createTopic("topic://dogs?topicSpace=kennelTopicSpace");
Comme pour les files d'attente, s'il existe plusieurs paires nom/valeur, ces dernières sont séparées par un perluète &.
- Propriétés
- busName, deliveryMode, priority, readAhead, timeToLive et topicSpace. Pour une description de ces propriétés, voir les informations de l'API générée.
Prise en charge des URI MA88
Les applications WebSphere Application Server Version 5.1 peuvent utiliser les méthodes createQueue et createTopic pour créer des objets de file d'attente et de sujet JMS à l'aide du fournisseur de messagerie intégré de la version 5 (fournisseur de messagerie JMS de la Version 5.1). Pour faciliter la migration de ces applications, le fournisseur de messagerie par défaut de la (bus d'intégration de services) prend en charge un vaste sous-ensemble de paramètres de chaîne MA88 valides dans les méthodes createQueue et createTopic.
- Gestionnaire de files d'attente par défaut
- Un URI MA88 de file d'attente inclut le nom du gestionnaire de files d'attente ; par
exemple :
queue://qm/queue
Pour spécifier le gestionnaire de files d'attente par défaut, n'entrez pas le nom du gestionnaire de files d'attente ; par exemple : queue:///queue (notez les trois barres obliques, ///). L'interprétation du gestionnaire de files d'attente par défaut étant logiquement compatible avec le concept d'une file d'attente sur le bus actuel, le bus tolère la présence de trois barres obliques à la suite du préfixe queue:. Cela permet au bus d'utiliser les URI de file d'attente MA88 avec un gestionnaire de files d'attente par défaut, sans les modifier.
- Gestionnaire de files d'attente autre que celui par défaut
- Si un URI de file d'attente MA88 spécifie un gestionnaire de files d'attente autre que celui par défaut, comme dans queue://qm/queue, son interprétation dans le bus est ambiguë. Pour mettre en évidence le problème potentiel et s'assurer que la destination est prise en compte lors du processus de portage, un tel URI génère une exception JMS lorsqu'il est transmis à la méthode createQueue().
- Propriétés MA88
- Comme pour les URI du bus, les URI MA88 peuvent contenir un
certain nombre de paires nom/valeur spécifiant les propriétés de la
destination. Un grand nombre de propriétés spécifiques à MA88 n'ont aucun
équivalent direct dans le bus et sont automatiquement ignorées.
Toutefois, les
propriétés MA88 suivantes sont mappées vers leurs équivalents du bus :
Nom MA88 Nom de bus d'intégration de services Remarques expiry timeToLive persistence deliveryMode 1 = Non persistant
2 = Persistant
Autre valeur = Application
Conversion des caractères génériques de sujet
Un sujet utilisé pour réceptionner des messages peut inclure des caractères génériques. La syntaxe des caractères génériques utilisée dans MA88 différant de la syntaxe XPath utilisée dans le bus, si un URI MA88 contient des caractères génériques, le bus tente de les convertir en équivalents XPath. La conversion effectuée dépend de la présence de la propriété brokerVersion dans l'URI MA88. Avec le fournisseur de messagerie par défaut de WebSphere Application Server Version 5.1, les URI spécifiant un caractère générique de sujet devaient inclure brokerVersion=1 dans les paires nom/valeur. Le bus utilise donc brokerVersion=1 comme déclencheur pour entreprendre la conversion des caractères génériques de MQSI en XPath.
Respect de la casse
La casse doit être respectée dans toutes les parties des paramètres de chaîne createQueue et createTopic.
Instances multiples d'une même propriété
Si un URI contient plusieurs occurrences d'une propriété donnée dont les valeurs sont en conflit, la valeur à utiliser n'est pas spécifiée.
Conflit entre les propriétés de MA88 et les propriétés du bus
Si un URI contient une propriété et l'équivalent MA88 de cette propriété et que leurs valeurs sont en conflit, la valeur à utiliser n'est pas spécifiée.
Propriétés inconnues
Toute paire nom/valeur pour laquelle le nom de la propriété n'est pas reconnu est ignorée sans qu'aucune erreur ne soit signalée.
Insertion d'une barre oblique devant les caractères spéciaux
- : (deux-points)
- Utilisé comme séparateur entre l'espace de sujet et le sujet dans les chaînes de sujets au format abrégé
- ? (point d'interrogation)
- Permet d'indiquer le début des paires nom/valeur.
- & (perluète)
- Permet de séparer plusieurs paires nom/valeur.
createTopic("myTop\\:ic") creates a topic with the name "myTop:ic"
createTopic("topic://my\\?Topi\\\\c") creates a topic with the name "my?Topi\c"
createQueue("queue://q1?busName=silly\\&bus") creates a queue with bus name "silly&bus"