Creación de destinos en una aplicación JMS
En lugar de recuperar destinos como objetos administrados desde un espacio de nombres JNDI ( Java Naming and Directory Interface), una aplicación JMS puede utilizar una sesión para crear destinos dinámicamente en tiempo de ejecución. Una aplicación puede utilizar un identificador universal de recursos (URI) para identificar una cola o un tema de IBM® MQ y, opcionalmente, para especificar una o más propiedades de un objeto Queue o Topic.
Utilización de una sesión para crear objetos Queue
Session session;
.
Queue q1 = session.createQueue("Q1");
Este código crea un objeto Queue con los valores predeterminados para todas las propiedades. El objeto representa una cola IBM MQ denominada Q1 que pertenece al gestor de colas local. Esta cola puede ser una cola local, una cola de alias o una definición de cola remota.Queue q2 = session.createQueue("queue://QM2/Q2?persistence=2&priority=5");
El objeto Queue creado por esta sentencia representa una cola IBM MQ denominada Q2 que es propiedad de un gestor de colas denominado QM2, y todos los mensajes enviados a este destino son persistentes y tienen una prioridad de 5. El gestor de colas identificado de esta manera puede ser el gestor de colas local o un gestor de colas remoto. Si es un gestor de colas remoto, IBM MQ debe estar configurado para que, cuando la aplicación envíe un mensaje a este destino, WebSphere MQ pueda direccionar el mensaje del gestor de colas local al gestor de colas QM2. Para obtener más información sobre los URI, consulte Identificadores uniformes de recursos (URI).Observe que el parámetro en el método createQueue() contiene información específica del proveedor. Por consiguiente, si se utiliza el método createQueue() para crear un objeto Queue en lugar de recuperar un objeto Queue como un objeto administrado desde un espacio de nombres JNDI, resultado podría ser que la aplicación fuera menos portable.
TemporaryQueue q3 = session.createTemporaryQueue();
Aunque se utiliza una sesión para crear una cola temporal, el ámbito de una cola temporal es la conexión que se ha utilizado para crear la sesión. Cualquiera de las sesiones de la conexión puede crear productores y
consumidores de mensajes para la cola temporal. La cola temporal permanece
hasta que la conexión finalice o la aplicación suprima explícitamente la cola
temporal utilizando el método TemporaryQueue.delete(), lo que suceda antes.Cuando una aplicación crea una cola temporal, IBM MQ classes for JMS crea una cola dinámica en el gestor de colas al que está conectada la aplicación. La propiedad TEMPMODEL de la fábrica de conexiones especifica el nombre de la cola de modelos que se utiliza para crear la cola dinámica y la propiedad TEMPQPREFIX de la fábrica de conexiones especifica el prefijo que se utiliza para formar el nombre de la cola dinámica.
Utilización de una sesión para crear objetos Topic
Session session;
.
Topic t1 = session.createTopic("Sport/Football/Results");
Este código crea un objeto Topic con los valores predeterminados para todas las propiedades. El objeto representa un tema llamado Sport/Football/Results.String uri = "topic://Sport/Tennis/Results?persistence=1&priority=0";
Topic t2 = session.createTopic(uri);
El objeto Topic creado por este código representa un tema llamado Sport/Tennis/Results, y todos los mensajes enviados a este destino no son persistentes y tienen una prioridad de 0. Para obtener más información sobre los URI de tema, consulte Identificadores uniformes de recursos (URI).Observe que el parámetro del método createTopic() contiene información específica del proveedor. Por consiguiente, si se utiliza el método createTopic() para crear un objeto Topic en lugar de recuperar un objeto Topic como un objeto administrado desde un espacio de nombres JNDI, el resultado podría ser que la aplicación fuera menos portable.
TemporaryTopic t3 = session.createTemporaryTopic();
Aunque se utiliza una sesión para crear un tema temporal, el ámbito de un
tema temporal es la conexión que se ha utilizado para crear la sesión. Cualquiera de las sesiones de la conexión puede crear productores y
consumidores de mensajes para el tema temporal. El tema temporal permanece hasta
que la conexión finalice o la aplicación suprima explícitamente el tema temporal utilizando el método TemporaryTopic.delete(), lo que suceda antes.Cuando una aplicación crea un tema temporal, IBM MQ classes for JMS crea un tema con un nombre que comienza con los caracteres TEMP/tempTopicPrefix, donde tempTopicPrefix es el valor de la propiedad TEMPTOPICPREFIX de la fábrica de conexiones.
Identificadores uniformes de recursos (URI)
Un URI de cola es una serie que especifica el nombre de una cola IBM MQ y, opcionalmente, el nombre del gestor de colas propietario de la cola y una o más propiedades del objeto Queue creado por la aplicación. Un URI de tema es una serie que especifica el nombre de un tema y, opcionalmente, una o más propiedades del objeto Topic creado por la aplicación.
queue://[ qMgrName ]/qName [? propertyName1 = propertyValue1
& propertyName2 = propertyValue2
&...]
Un URI de tema tiene el formato siguiente:topic://topicName [? propertyName1 = propertyValue1
& propertyName2 = propertyValue2
&...]
Las variables con formatos tienen los significados siguientes:- qMgrName
- Nombre del gestor de colas que es propietario de la cola identificada por
el URI.
El gestor de colas puede ser el gestor de colas local o un gestor de colas remoto. Si es un gestor de colas remoto, IBM MQ debe estar configurado para que, cuando una aplicación envíe un mensaje a la cola, WebSphere MQ pueda direccionar el mensaje desde el gestor de colas local al gestor de colas remoto.
Si no se especifica ningún nombre, se presupone que es el gestor de colas local.
- qName
- El nombre de la cola IBM MQ .
La cola puede ser una cola local, una cola alias o una definición de cola remota.
Para ver las reglas para crear nombres de cola, consulte Reglas para nombrar objetos de IBM MQ.
- topicName
- El nombre del tema.
Para ver las reglas para crear nombres de tema, consulte Reglas para nombrar objetos de IBM MQ. Evite utilizar los caracteres comodín +, #, * y ? en nombres de temas. Los nombres de tema que contengan esos caracteres pueden producir resultados inesperados cuando un usuario se suscribe al tema. Consulte Combinación de series de tema.
- propertyName1, propertyName2, ...
- Los nombres de las propiedades del objeto Queue o Topic creado por la
aplicación. La Tabla 1 lista los nombres de propiedad válidos que se pueden utilizar en un URI.
Si no se especifica ninguna propiedad, el objeto Queue o Topic tiene los valores predeterminados para todas las propiedades.
- propertyValue1, propertyValue2, ...
- Los valores de las propiedades del objeto Queue o Topic creado por la aplicación. La Tabla 1 lista los valores de propiedad válidos que se pueden utilizar en un URI.
| Nombre de propiedad | Descripción | Valores válidos |
|---|---|---|
| CCSID | Cómo se representan los datos de caracteres en el cuerpo de un mensaje cuando IBM MQ classes for JMS reenvía el mensaje al destino |
|
| codificación | Cómo se representan los datos numéricos en el cuerpo de un mensaje cuando IBM MQ classes for JMS reenvía el mensaje al destino |
|
| caducidad | Tiempo de vida de los mensajes enviados al destino |
|
| multicast | Valor de multidifusión para un tema cuando se utiliza una conexión en tiempo real con un intermediario | La lista siguiente contiene los valores válidos. Asociado con cada valor está el valor correspondiente de la propiedad MULTICAST tal como se utiliza en la herramienta de administración de IBM MQ JMS . Para obtener una descripción de la propiedad MULTICAST y sus valores válidos, consulte Propiedades de objetos IBM MQ classes for JMS.
|
| persistence | La persistencia de los mensajes enviados al destino |
|
| priority | La prioridad de los mensajes enviados al destino |
|
| targetClient | Si los mensajes enviados al destino contienen una cabecera MQRFH2 |
|
queue:///Q1
El URI siguiente identifica una cola IBM MQ denominada Q2 que es propiedad de un gestor de colas denominado QM2. Todos los mensajes enviados a este destino tienen una prioridad de 6. Las propiedades restantes del objeto Queue creadas utilizando este URI tienen sus valores predeterminados.queue://QM2/Q2?priority=6
El siguiente URI identifica un tema titulado Sport/Athletics/Results. Todos los mensajes enviados a este destino son no persistentes y tienen una prioridad de 0. Las propiedades restantes del objeto de tema creado utilizando este URI tienen sus valores predeterminados.topic://Sport/Athletics/Results?persistence=1&priority=0