PUBLISH Mensaje de publicación

Un mensaje PUBLISH es enviado por un cliente a un intermediario para su distribución a los suscriptores interesados. Cada mensaje de publicación (PUBLISH) está asociado a un nombre de tema (conocido también como el Sujeto o Canal). Es un espacio de nombres que define una taxonomía de fuentes de información para las cuales los suscriptores pueden manifestar un interés. Un mensaje publicado para un nombre de tema específico se entrega a los suscriptores conectados para dicho tema.

Para mantener una simetría, si un cliente se suscribe a uno o más temas, cualquier mensaje publicado para dichos temas se enviará mediante el intermediario al cliente como mensaje PUBLISH.

Cabecera fija

La tabla de abajo describe el formato de la cabecera fija:

bit 7 6 5 4 3 2 1 0
byte 1 Tipo de mensaje (3) Indicador DUP Nivel de QoS RETAIN
  0 0 1 1 0 0 1 0
byte 2 Longitud restante
Nivel de QoS
Establecido en 1.
Indicador DUP
Establecer en cero (0). Esto indica que el mensaje se está enviando por primera vez.

Para mensaje con un nivel de QoS 1 ó 2 que se están volviendo a enviar debido a que se ha detectado un error, el bit DUP se establece en 1. Esto indica al intermediario que el mensaje podría duplicar un mensaje que ya se hubiese recibido. El significado de esta información para el intermediario depende del nivel de QoS. El bit de DUP no se utiliza para mensajes con un nivel de QoS 0.

Indicador RETAIN
Establecido en cero. Esto significa no retener.
Campo de longitud restante
Es la longitud de la cabecera variable más la longitud de la carga útil. Este campo puede ser de múltiples bytes.

Cabecera variable

La cabecera variable contiene los siguientes campos:

Nombre del tema
Una serie de caracteres codificada en UTF.
ID de mensaje
Presente para mensajes con nivel de QoS 1 y nivel de QoS 2.

Normalmente, la biblioteca de protocolos es la responsable de la generación del ID de mensaje (Message ID) y de devolverlo a la aplicación de publicación, posiblemente como un manejador de devolución. Este enfoque evita el riesgo de tener varias aplicaciones o hebras de publicación ejecutándose en un solo cliente generen ID de mensajes duplicados.

Un ID de mensaje no debe utilizarse en la cabecera variable para mensajes cuyo nivel de QoS sea 0.

El ID de mensaje es un entero sin signo, de 16 bits, que normalmente aumenta exactamente en 1 de un mensaje a otro, pero que no está obligado a hacerlo. El orden de los 2 bytes del identificador de mensaje es MSB y a continuación LSB (big-endian).

El ID de mensaje 0 (es decir, 0x0000) está reservado como ID de mensaje no válido y no debe utilizarse.

La tabla que sigue muestra un ejemplo de cabecera variable para un mensaje de publicación (PUBLISH).

Campo Valor
Nombre del tema: "a/b"
Nivel de QoS 1
ID de mensaje 10

El formato de cabecera variable aparece, en este caso, en la tabla que sigue.

  Descripción 7 6 5 4 3 2 1 0
Nombre del tema
byte 1 MSB de longitud (0) 0 0 0 0 0 0 0 0
byte 2 LSB de longitud (3) 0 0 0 0 0 0 1 1
byte 3 'a' (0x61) 0 1 1 0 0 0 0 1
byte 4 '/' (0x2F) 0 0 1 0 1 1 1 1
byte 5 'b' (0x62) 0 1 1 0 0 0 1 0
Identificador de mensaje
byte 6 MSB de ID de mensaje 0 0 0 0 0 0 0 0
byte 7 LSB de ID de mensaje (10) 0 0 0 0 1 0 1 0

Carga útil

Contiene los datos para la publicación. El contenido y el formato de los datos es específico de la aplicación. El campo de D restante de la cabecera fija incluye la longitud de la cabecera variable y la longitud de la carga útil.

Respuesta

La respuesta a un mensaje PUBLISH depende el nivel de QoS. La tabla que sigue muestra las respuestas esperadas.

Nivel de QoS Respuesta esperada
QoS 0 Ninguna
QoS 1 PUBACK
QoS 2 PUBREC

Acciones

Los mensajes PUBLISH pueden enviarse desde un publicador al intermediario o desde el intermediario a un suscriptor. La acción del receptor cuando recibe un mensaje depende del nivel de QoS del mensaje:

QoS 0
Deja el mensaje disponible para cualquiera de las partes interesadas.
QoS 1
Anota el mensaje en almacenamiento persistente, lo deja disponible para cualesquiera de las partes interesadas y devuelve un mensaje PUBACK al emisor.
QoS 2
Anota el mensaje en almacenamiento persistente, no lo deja aún disponible para cualesquiera de las partes interesadas y devuelve un mensaje PUBREC al emisor.

Si el intermediario recibe el mensaje, las partes interesadas son los suscriptores al tema del mensaje PUBLISH. Si un suscriptor recibe el mensaje, las partes interesadas son la aplicación del cliente que se ha suscrito a uno o más temas y que está a la espera de un mensaje del intermediario.

Conceptos relacionados
WebSphere MQ Telemetry Transport
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ac10970_