Création de destinations dans une application JMS
Au lieu d'extraire des destinations en tant qu'objets gérés à partir d'un espace de nom JNDI ( Java Naming and Directory Interface), une application JMS peut utiliser une session pour créer des destinations de manière dynamique lors de l'exécution. Une application peut utiliser un identificateur URI (Uniform Resource Identifier) pour identifier une file d'attente IBM® MQ ou une rubrique et, éventuellement, pour spécifier une ou plusieurs propriétés d'un objet de file d'attente ou de rubrique.
Utilisation d'une session pour créer des objets de file d'attente
Session session;
.
Queue q1 = session.createQueue("Q1");
Ce code crée un objet File d'attente avec les valeurs par défaut pour toutes ses propriétés. L'objet représente une file d'attente IBM MQ appelée Q1 qui appartient au gestionnaire de files d'attente local. Cette file d'attente peut être une file d'attente locale, une file d'attente alias ou une définition de file d'attente éloignée.Queue q2 = session.createQueue("queue://QM2/Q2?persistence=2&priority=5");
L'objet File d'attente créé par cette instruction représente une file d'attente IBM MQ appelée Q2 qui appartient à un gestionnaire de files d'attente appelé QM2, et tous les messages envoyés à cette destination sont persistants et ont une priorité de 5. Le gestionnaire de files d'attente identifié de cette manière peut être le gestionnaire de files d'attente local ou un gestionnaire de files d'attente éloignées. S'il s'agit d'un gestionnaire de files d'attente éloignées, IBM MQ doit être configuré de sorte que, lorsque l'application envoie un message à cette destination, WebSphere MQ puisse acheminer le message du gestionnaire de files d'attente local vers le gestionnaire de files d'attente QM2. Pour plus d'informations sur les URI, voir Uniform Resource Identifier (URI).Notez que le paramètre de la méthode createQueue() contient des informations spécifiques au fournisseur. Par conséquent, l'utilisation de la méthode createQueue() pour créer un objet de file d'attente, au lieu de récupérer un objet de file d'attente en tant qu'objet administré à partir d'un espace de noms JNDI, peut rendre votre application moins portable.
TemporaryQueue q3 = session.createTemporaryQueue();
Bien qu'une session soit utilisée pour créer une file d'attente temporaire, la portée d'une file d'attente temporaire correspond à la connexion utilisée pour créer la session. Toutes les sessions de la connexion peuvent créer des expéditeurs et des consommateurs de messages pour la file d'attente temporaire. La file d'attente temporaire est conservée jusqu'à la fin de la connexion ou jusqu'à ce que l'application supprime explicitement la file d'attente temporaire à l'aide de la méthode TemporaryQueue.delete (), la date la plus proche étant retenue.Lorsqu'une application crée une file d'attente temporaire, IBM MQ classes for JMS crée une file d'attente dynamique dans le gestionnaire de files d'attente auquel l'application est connectée. La propriété TEMPMODEL de la fabrique de connexions indique le nom de la file d'attente modèle utilisée pour créer la file d'attente dynamique, et la propriété TEMPQPREFIX de la fabrique de connexions indique le préfixe utilisé pour former le nom de la file d'attente dynamique.
Utilisation d'une session pour créer des objets de rubrique
Session session;
.
Topic t1 = session.createTopic("Sport/Football/Results");
Ce code crée un objet Topic avec les valeurs par défaut pour toutes ses propriétés. L'objet représente un sujet appelé Sport / Football/Résultats.String uri = "topic://Sport/Tennis/Results?persistence=1&priority=0";
Topic t2 = session.createTopic(uri);
L'objet Topic créé par ce code représente une rubrique appelée Sport / Tennis/Results, et tous les messages envoyés à cette destination sont non persistants et ont une priorité de 0. Pour plus d'informations sur les URI de rubrique, voir URI (Uniform Resource Identifier).Notez que le paramètre de la méthode createTopic() contient des informations spécifiques au fournisseur. Par conséquent, l'utilisation de la méthode createTopic() pour créer un objet Topic, au lieu de récupérer un objet Topic en tant qu'objet administré à partir d'un espace de noms JNDI, peut rendre votre application moins portable.
TemporaryTopic t3 = session.createTemporaryTopic();
Bien qu'une session soit utilisée pour créer une rubrique temporaire, la portée d'une rubrique temporaire est la connexion qui a été utilisée pour créer la session. Toutes les sessions de la connexion peuvent créer des expéditeurs et des consommateurs de message pour la rubrique temporaire. La rubrique temporaire est conservée jusqu'à la fin de la connexion ou jusqu'à ce que l'application supprime explicitement la rubrique temporaire à l'aide de la méthode TemporaryTopic.delete (), la date la plus proche étant retenue.Lorsqu'une application crée un sujet temporaire, IBM MQ classes for JMS crée un sujet dont le nom commence par les caractères TEMP/tempTopicPrefix, où tempTopicPrefix est la valeur de la propriété TEMPTOPICPREFIX de la fabrique de connexions.
uniform resource identifier (URI)
Un URI de file d'attente est une chaîne qui spécifie le nom d'une file d'attente IBM MQ et, en option, le nom du gestionnaire de files d'attente qui possède la file d'attente et une ou plusieurs propriétés de l'objet File d'attente créé par l'application. Un URI de rubrique est une chaîne qui spécifie le nom d'une rubrique et, éventuellement, une ou plusieurs propriétés de l'objet de rubrique créé par l'application.
queue://[ qMgrName ]/qName [? propertyName1 = propertyValue1
& propertyName2 = propertyValue2
&...]
Le format d'un URI de rubrique est le suivant:topic://topicName [? propertyName1 = propertyValue1
& propertyName2 = propertyValue2
&...]
Les variables de ces formats ont les significations suivantes:- qMgrName
- Nom du gestionnaire de files d'attente propriétaire de la file d'attente identifiée par l'URI.
Le gestionnaire de files d'attente peut être le gestionnaire de files d'attente local ou un gestionnaire de files d'attente éloignées. S'il s'agit d'un gestionnaire de files d'attente éloignées, IBM MQ doit être configuré de sorte que, lorsqu'une application envoie un message à la file d'attente, WebSphere MQ puisse acheminer le message du gestionnaire de files d'attente locales vers le gestionnaire de files d'attente éloignées.
Si aucun nom n'est spécifié, le gestionnaire de files d'attente local est utilisé.
- qName
- Nom de la file d'attente IBM MQ .
La file d'attente peut être une file d'attente locale, une file d'attente alias ou une définition de file d'attente éloignée.
Pour connaître les règles de création de noms de file d'attente, voir Règles de dénomination des objets IBM MQ.
- topicName
- Nom de la rubrique.
Pour connaître les règles de création de noms de rubrique, voir Règles de dénomination des objets IBM MQ. Evitez d'utiliser les caractères génériques +, #, * et? dans les noms de rubrique. Les noms de rubrique contenant ces caractères peuvent générer des résultats inattendus lorsque vous vous y abonnez. Voir Combinaison de chaînes de rubrique.
- propertyName1, propertyName2, ...
- Noms des propriétés de l'objet de file d'attente ou de rubrique créé par l'application. Le tableau 1 répertorie les noms de propriété valides qui peuvent être utilisés dans un URI.
Si aucune propriété n'est spécifiée, l'objet de file d'attente ou de rubrique possède les valeurs par défaut pour toutes ses propriétés.
- propertyValue1, propertyValue2, ...
- Valeurs des propriétés de l'objet Queue ou Topic créé par l'application. Le tableau 1 répertorie les valeurs de propriété valides qui peuvent être utilisées dans un URI.
| Nom de la propriété | Description | Valeur valides |
|---|---|---|
| CCSID | Représentation des données de type caractères dans le corps d'un message lorsque IBM MQ classes for JMS transfère le message à la destination |
|
| codage | Représentation des données numériques dans le corps d'un message lorsque IBM MQ classes for JMS transfère le message à la destination |
|
| expiration | Durée de vie des messages envoyés à la destination |
|
| multidiffusion | Paramètre de multidiffusion pour une rubrique lors de l'utilisation d'une connexion en temps réel à un courtier | La liste suivante contient les valeurs valides. La valeur correspondante de la propriété MULTICAST, telle qu'elle est utilisée dans l'outil d'administration de IBM MQ JMS , est associée à chaque valeur. Pour une description de la propriété MULTICAST et de ses valeurs valides, voir Propriétés des objets IBM MQ classes for JMS.
|
| persistance | Persistance des messages envoyés à la destination |
|
| priority | Priorité des messages envoyés à la destination |
|
| targetClient | Indique si les messages envoyés à la destination contiennent un en-tête MQRFH2 |
|
queue:///Q1
L'URI suivant identifie une file d'attente IBM MQ appelée Q2 qui appartient à un gestionnaire de files d'attente appelé QM2. Tous les messages envoyés à cette destination ont une priorité de 6. Les autres propriétés de l'objet File d'attente créé à l'aide de cet URI ont leurs valeurs par défaut.queue://QM2/Q2?priority=6
L'URI suivant identifie une rubrique appelée Sport / Athlétiques / Résultats. Tous les messages envoyés à cette destination sont non persistants et ont une priorité de 0. Les autres propriétés de l'objet Topic créé à l'aide de cet URI ont leurs valeurs par défaut.topic://Sport/Athletics/Results?persistence=1&priority=0