El método createQueue o createTopic y el proveedor de mensajería predeterminado
Puede utilizar el método Session.createQueue(String) o el método Session.createTopic(String), en lugar de utilizar la búsqueda JNDI para crear una cola JMS o un tema JMS con el proveedor de mensajería predeterminado.
Queue q = mySession.createQueue("Q1");
crea una instancia de cola de JMS que se puede utilizar para hacer referencia a
la Q1 de destino existentes.Con el proveedor de mensajería predeterminado, el destino actual existe como una cola o un espacio de temas en el bus al que está conectada la sesión.
createQueue
El método Session.createQueue(String) se utiliza para crear un objeto de cola JMS que representa un destino existente. Esto proporciona un método alternativo, aunque menos manejable, de obtener objetos de cola JMS definidos administrativamente mediante la búsqueda JNDI.
- Formato sencillo
- En su formato más sencillo, el parámetro para el método createQueue es el nombre de un destino existente del bus al que se ha conectado la sesión. Por ejemplo,
si existe una cola con el nombre Q1, entonces el método siguiente crea una instancia de cola JMS que se puede utilizar para hacer referencia a dicho destino:
Queue q = mySession.createQueue("Q1");
- Formato de URI
- En situaciones más complejas, las aplicaciones pueden utilizar un formato basado en URI. El formato de URI permite proporcionar un número arbitrario de pares de nombre y valor para establecer diferentes propiedades del objeto Queue.
El URI de cola se identifica mediante el prefijo queue://, seguido del nombre del destino.
El formato más sencillo de la cola Q1 anterior se puede expresar con el URI siguiente:
Queue q = mySession.createQueue("queue://Q1");
Los pares de nombre y valor se introducen mediante el signo de interrogación ?. Por ejemplo, una aplicación puede conectar una sesión a un bus y, a continuación, utilizar el formato siguiente para crear una instancia de cola JMS para la cola Q2 en un bus diferente, denominado otherBus:
Cuando se envían mensajes a IBM MQ, el nombre de cola debe ir seguida de un signo de arroba (@) y el nombre del gestor de colas en el que está ubicada la cola, por ejemplo:Queue q = mySession.createQueue("queue://Q2?busName=otherBus");
Queue q = mySession.createQueue("queue://Q2@qmgr?busName=otherBus");
Las diferentes parejas de nombre y valor se separan mediante el carácter de ampersand &, por ejemplo:Queue q = mySession.createQueue("queue://Q2?busName=otherBus&deliveryMode= Application&readAhead=AsConnection&priority=6");
- Propiedades
- busName, deliveryMode, priority, readAhead y timeToLive. Consulte la información de la API generada para obtener una descripción de estas propiedades.
createTopic
El método Session.createTopic(String) se utiliza para crear un objeto de tema JMS que represente un destino existente. (Tenga en cuenta que para los temas es el espacio de temas y no el tema lo que existe.) Esto proporciona un método alternativo, aunque menos manejable, de obtener objetos de tema JMS definidos administrativamente mediante la búsqueda JNDI.
- Formato sencillo
- En su formato más sencillo, el parámetro para el método createTopic es el nombre de un tema del espacio de temas predeterminado del bus al que se ha conectado la sesión. Por ejemplo, si el espacio de temas predeterminado existe, entonces se puede utilizar una instancia de temas JMS para hacer referencia al tema cats en el tema predeterminado.
Topic t = mySession.createTopic("cats");
Para especificar un espacio de temas que no sea el valor predeterminado, se puede utilizar la sintaxis especial con el formato topicSpace:topic. Por ejemplo:Topic t = mySession.createTopic("kennelTopicSpace:dogs");
- Formato de URI
- En situaciones más complejas se puede utilizar un formato basado en el URI. El URI del tema se identifica mediante el prefijo topic:// seguido del nombre del tema.
Los ejemplos anteriores se pueden expresar como los URI siguientes:
Topic t = mySession.createTopic("topic://cats"); Topic t = mySession.createTopic("topic://dogs?topicSpace=kennelTopicSpace");
Al igual que en las colas, las diferentes parejas de nombre y valor se separan mediante el carácter de ampersand &.
- Propiedades
- busName, deliveryMode, priority, readAhead, timeToLive y topicSpace. Consulte la información de la API generada para obtener una descripción de estas propiedades.
Soporte para los URI de MA88
Las aplicaciones WebSphere Application Server Versión 5.1 pueden utilizar los métodos createQueue y createTopic para crear los objetos de cola y tema JMS con el proveedor de mensajería incorporada de la versión 5 (el proveedor de mensajería JMS de Versión 5.1). Para ayudarle a realizar la migración de estas aplicaciones, el proveedor de mensajería predeterminado de (el bus de integración de servicios) soporta un gran subconjunto de parámetros válidos de serie específicos de MA88 para los métodos createQueue y createTopic.
- Gestor de colas predeterminado
- Un URI de MA88 para una cola incluye el nombre del gestor de colas, por ejemplo:
queue://qm/queue
Para especificar el gestor de colas predeterminado, el nombre del gestor de colas se omite; por ejemplo: queue:///queue (observe las tres barras inclinadas, ///). Dado que la interpretación del gestor de colas predeterminado es coherente de forma lógica con el concepto de una cola en el bus actual, el bus tolera la presencia de las tres barras inclinadas después del prefijo queue:. De esta manera, el bus puede utilizar los URI de la cola MA88 con un gestor de colas predeterminado sin realizar cambios.
- Gestor de colas no predeterminado
- Si un URI de cola MA88 especifica un gestor de colas no predeterminado, como en queue://qm/queue, esto tendrá una interpretación ambigua en el bus. Para resaltar el problema potencial y garantizar que se tiene en consideración el destino durante el proceso para portarlo, dicho URI genera una JMSException si se pasa al método createQueue().
- Propiedades de MA88
- Al igual que con los URI de bus, los URI de MA88 pueden contener un número de pares de nombre y valor que especifiquen las propiedades del destino. Muchas de las propiedades específicas de MA88 no tienen un equivalente directo en el bus y se ignoran de forma silenciosa.
Sin embargo, las propiedades MA88 siguientes se correlacionan con los equivalentes de bus:
Nombre de MA88 Nombre de bus de integración de servicios Notas expiry timeToLive persistence deliveryMode 1 = NonPersistent
2 = Persistent
Cualquier otro valor = Application
Conversión de comodines de temas
Un tema que se utilice para consumir mensajes puede incluir comodines. La sintaxis de los comodines utilizados en MA88 difiere de la sintaxis de XPath utilizada en el bus, de modo que si un URI de MA88 contiene comodines el bus intenta convertirlos en equivalentes de XPath. La conversión efectuada dependerá de la presencia de la propiedad brokerVersion del URI MA88. El proveedor de mensajería predeterminado de WebSphere Application Server Versión 5.1 necesita que cualquier URI que especifique un comodín de tema incluya brokerVersion=1 en los pares de nombre y valor. Por lo tanto, el bus utiliza brokerVersion=1 como desencadenante para realizar la conversión de comodines de MQSI a XPath.
Sensible a las mayúsculas y minúsculas
Todas las partes del parámetro de serie para createQueue y createTopic son sensibles a las mayúsculas y minúsculas.
Varias instancias de la misma propiedad
Si un URI contiene varias apariciones de una propiedad determinada con valores en conflicto, no se especifica qué valor se utiliza.
Conflicto entre las propiedades de MA88 y del bus
Si un URI contiene tanto una propiedad como el equivalente MA88 de dicha propiedad con valores en conflicto, no se especifica el valor que se utiliza.
Propiedades desconocidas
Cualquier pareja de nombre y valor para la que no se reconozca el nombre de la propiedad se ignorará sin que se genere un informe de errores.
Caracteres de escape especiales
- : (dos puntos)
- Se utiliza como separador entre el espacio de temas y el tema en el formato corto para series de temas.
- ? (signo de interrogación)
- Se utiliza para indicar el inicio de las parejas de nombre y valor.
- & (ampersand)
- Se utiliza para separar varias parejas de nombre y valor.
createTopic("myTop\\:ic") crea un tema con el nombre "myTop:ic"
createTopic("topic://my\\?Topi\\\\c") crea un tema con el nombre "my?Topi\c"
createQueue("queue://q1?busName=silly\\&bus") crea una cola con el nombre de bus "silly&bus"