Redes de publicación/suscripción distribuidas

Cada gestor de colas compara los mensajes publicados en un tema con las suscripciones creadas localmente que se han suscrito a ese tema. Puede configurarse una red de gestores de colas de forma que los mensajes publicados por una aplicación conectada a un gestor de colas se entreguen a las suscripciones coincidentes creadas en otros gestores de colas de la red. Esto requiere una configuración adicional a simples canales entre gestores de colas.

Una configuración de publicación/suscripción distribuida es un conjunto de gestores de colas conectados entre sí. Los gestores de colas pueden estar todos en el mismo sistema físico o pueden estar distribuidos entre varios sistemas físicos. Cuando se conectan gestores de colas entre sí, los suscriptores pueden suscribirse a un gestor de colas y recibir mensajes publicados inicialmente en otro gestor de colas. Para ilustrar esto, la figura siguiente añade un segundo gestor de colas a la configuración descrita en Ejemplo de una configuración de publicación/suscripción de un solo gestor de colas.
  • El gestor de colas 2 es utilizado por el editor 4 para publicar información de previsión meteorológica, utilizando un tema Tiempo e información sobre las condiciones de tráfico en las rutas principales utilizando un tema Tráfico.
  • El editor 4 también utiliza el gestor de colas, y se suscribe a la información sobre las condiciones de tráfico utilizando el tema Tráfico.
  • El editor 3 también se suscribe a información sobre las condiciones meteorológicas, aunque utiliza un gestor de colas diferente del editor. Esto es posible debido a que los gestores de colas se enlazan entre sí.
Figura 1. Ejemplo de publicación/suscripción con dos gestores de colas
Ejemplo de publicación/suscripción distribuida con dos gestores de colas.

Puede conectar manualmente los gestores de colas en una jerarquía padre e hijo o puede crear un clúster de publicación/suscripción y dejar que IBM® MQ defina automáticamente gran parte del detalle de conexión. También pueden utilizarse ambas topologías conjuntamente, por ejemplo, uniendo varios clústeres en una jerarquía.

Visión general de un clúster de publicación/suscripción

Un clúster de publicación/suscripción es un clúster estándar al que se le han añadido uno o más objetos de tema. Cuando se define un objeto de tema administrativo en cualquier gestor de colas de un clúster, y se convierte ese objeto de tema en clúster especificando un nombre de clúster, los editores y suscriptores del tema pueden conectarse a cualquiera de los gestores de colas del clúster, y los mensajes publicados se enrutan a los suscriptores a través de canales de clúster entre gestores de colas.

Figura 2. Clúster de publicación/suscripción
Un clúster se muestra como una nube que contiene varios gestores de colas. Algunos de los gestores de colas alojan publicadores, algunos suscriptores de host y algunos alojan ambos.
Hay dos maneras de configurar el modo en que los mensajes de publicación/suscripción se direccionan en un clúster:
  • direccionamiento directo
  • direccionamiento de host de tema

Cuando se configura un tema en clúster por direccionamiento directo, los mensajes publicados en un gestor de colas se envían directamente desde ese gestor de colas a todas las suscripciones en cualquier otro gestor de colas del clúster. Esto puede proporcionar la ruta más directa para las publicaciones, pero da lugar a que todos los gestores de colas del clúster tengan conocimiento de todos los demás gestores de colas, pudiendo en potencia haber canales de clúster establecidos entre todos ellos.

Cuando se utiliza el direccionamiento de host de tema, los mensajes publicados en un gestor de colas se envían desde ahí a un gestor de colas que aloja una definición del objeto de tema administrado. Ese gestor de colas de host de temas direcciona el mensaje a cada suscripción en cualquier otro gestor de colas del clúster. Si los publicadores o los suscriptores no están ubicados en los gestores de colas de host de tema, las publicaciones seguirán una ruta más larga. Sin embargo, la ventaja es que solo los gestores de cola de host de tema tienen conocimiento de todos los demás gestores de colas del clúster y (posiblemente) tienen canales de clúster establecidos con ellos.

Para obtener más información, consulte Clústeres de publicación/suscripción.

Visión general de las jerarquías de publicación/suscripción

Una jerarquía de publicación/suscripción es un conjunto de gestores de colas conectados mediante canales en una estructura jerárquica. Cada gestor de colas identifica su gestor de colas padre , tal como se describe en Conexión de un gestor de colas a una jerarquía de publicación/suscripción.

Los publicadores y suscriptores de un tema pueden conectarse con cualquier gestor de colas de la jerarquía y los mensajes fluyen entre ellos valiéndose de la conectividad jerárquica de los gestores de colas.

Figura 3. Jerarquía de publicación/suscripción
Se muestra un gestor de colas con dos gestores de colas hijo. Uno de los hijos también tiene dos gestores de colas hijo. Algunos de los gestores de colas alojan publicadores, algunos suscriptores de host y algunos alojan ambos.

En la figura anterior, las publicaciones entregadas a los suscriptores en QM3 y QM4 se han direccionado de QM2 a QM1 y luego a QM3 y finalmente a QM4.

Las jerarquías dan un control directo sobre las relaciones existentes entre cada gestor de colas en la jerarquía. Esto permite un control preciso sobre el direccionamiento de los mensajes desde los publicadores a los suscriptores y resulta de especial utilidad cuando se direccionan entre redes de gestores de colas con conectividad limitada. Debe prestarse especial atención a la disponibilidad y capacidad de cada uno de los gestores de colas a través de los cuales se direcciona un mensaje en su camino desde el publicador al suscriptor.

Para más información, consulte Jerarquías de publicación/suscripción.

Distribución de una publicación entre gestores de colas

Además de las opciones de direccionamiento, existen dos enfoques en la distribución de las publicaciones en una red de gestores de colas:
  • Solo enviar las publicaciones desde un gestor de colas a los gestores de colas que en ese momento alojen una suscripción a esa publicación.
  • Enviar todas las publicaciones a todos los gestores de colas, y dejar que ellos las comparen con sus suscripciones.
El primer enfoque da lugar a que solo se envíen mensajes de publicación cuando es necesario, pero requiere que los gestores de colas compartan un cierto nivel de conocimiento de las suscripciones. El segundo enfoque no requiere compartición de conocimiento de suscripciones, pero puede dar lugar al envío innecesario de mensajes de publicación entre los gestores de colas.

De forma predeterminada, IBM MQ utiliza el método anterior, en el que las publicaciones sólo se envían a los gestores de colas que tienen suscripciones para ellos. El conocimiento de las suscripciones se propaga entre los gestores de colas en forma de suscripciones de proxy. Cuál de los dos será el más eficiente en el uso de una topología distribuida de publicación/suscripción dependerá de la distribución y del tiempo de vida de las suscripciones, y de la frecuencia de las publicaciones. Consulte Rendimiento de suscripción en redes de publicación/suscripción.