Notas de la version de Sun Java System Message Queue 4.2

Varios destinos para un editor o suscriptor

En Información de resolución de problemas de 4.2, un editor puede publicar mensajes en varios destinos de temas y un suscriptor puede consumir mensajes procedentes de varios destinos de temas. Esta función se logra al utilizar un nombre de destino de temas que incluye caracteres comodín que representen varios destinos. Al utilizar dichos nombres simbólicos, los administradores pueden crear destinos de temas adicionales, según sea necesario, coherentes con el esquema de asignación de nombres comodín. Los editores y suscriptores publican y consumen automáticamente a partir de los destinos añadidos. (Los suscriptores de los temas comodín son más comunes que los editores.)


Nota –

Esta función no se aplica a destinos de cola.


El formato del nombre de destino de temas simbólico consta de varios segmentos, en los que los caracteres comodín (*, **, >) pueden representar uno o más segmentos del nombre. Por ejemplo, suponga que tiene el siguiente esquema de asignación de nombres de destinos de temas:

size.color. shape

en el que los segmentos del nombre del tema pueden tener los siguientes valores:

Message Queue admite los siguientes caracteres comodín:

Por lo tanto, puede indicar varios destinos de temas de la siguiente manera:

large.*.circle representaría:

large.red.circle
large.green.circle
...

**.square representaría todos los nombres que acaban en .square , por ejemplo:


small.green.square
medium.blue.square
...

small.> representaría todos los nombres de destinos que comienzan por small., por ejemplo:


small.blue.circle
small.red.square
...

Para utilizar esta función de destinos múltiples, deberá crear destinos de temas utilizando un esquema de asignación de nombres similar al descrito anteriormente. A continuación, las aplicaciones de cliente pueden crear editores o consumidores utilizando nombres de destinos simbólicos. Por ejemplo:

...
String DEST_LOOKUP_NAME = "large.*.circle";
Topic t = (Destination) ctx.lookup(DEST_LOOKUP_NAME);
TopicPublisher myPublisher = mySession.createPublisher(t)
myPublisher.send(myMessage);
...
String DEST_LOOKUP_NAME = "**.square";
Topic t = (Destination) ctx.lookup(DEST_LOOKUP_NAME);
TopicSubscriber mySubscriber = mySession.createSubscriber(t);
Message m = mySubscriber.receive();

En el primer ejemplo, el agente colocará una copia del mensaje en cualquier destino que coincida con el nombre simbólico large.*.circle. En el segundo ejemplo, se creará un suscriptor si existe al menos un destino que coincida con el nombre simbólico **.square y recibirá mensajes de todos los destinos que coincidan con dicho nombre simbólico. Si no existen destinos que coincidan con el nombre simbólico, el suscriptor no se creará hasta que exista dicho destino.

Si un administrador crea destinos adicionales que coincidan con un nombre simbólico, los editores comodín creados mediante dicho nombre simbólico se publicarán en dicho destino y los editores comodín creados mediante dicho nombre simbólico recibirán mensajes de dicho destino.

Además, las herramientas de administración de Message Queue, aparte de realizar informes acerca del número total de editores (productores) y suscriptores (consumidores) de un destino de temas, también realizarán informes sobre el número de editores que son editores comodín (incluidos sus nombres de destino simbólicos correspondientes) y el número de suscriptores que son suscriptores comodín (incluidos sus nombres de destino simbólicos), si es que existen.