Un mensaje de publicación PUBLISH lo envía un cliente al intermediario para su distribución a los suscriptores interesados. Cada mensaje PUBLISH está asociado a un nombre de tema (denominado también Asunto o Canal). Es un espacio de nombres jerárquico que define una taxonomía de fuentes de información para las que los suscriptores pueden registrar un interés. Un mensaje que se publica en un nombre de tema específico se entrega a los suscriptores conectados para dicho tema.
Para mantener la simetría, si un cliente suscribe uno o más temas, el intermediario envía al cliente todos los mensajes publicados en dichos temas como un mensaje PUBLISH.
En la tabla siguiente se muestra el formato de cabecera fija.
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
byte 1 | Tipo de mensaje (3) | Distintivo DUP | Nivel de QoS | RETAIN | ||||
0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | |
byte 2 | Longitud restante |
Para los mensajes con nivel de QoS 1 o 2 que se vuelven a enviar porque se ha detectado una anomalía, el bit DUP se establece en 1. Esto indica al intermediario que el mensaje puede ser un duplicado de un mensaje que ya se ha recibido. La importancia de esta información para el intermediario depende del nivel de QoS. El bit DUP no se utiliza para mensajes con nivel de QoS 0.
La cabecera variable contiene los siguientes campos:
Normalmente, la biblioteca de protocolos se ocupa de generar el ID de mensaje y vuelve a pasar a la aplicación de publicación, posiblemente como manejador de retorno. Este método evita el peligro de que varias aplicaciones, o hebras de publicación, se ejecuten en un solo cliente generando ID de mensajes duplicados.
Un ID de mensaje no debe utilizarse en la cabecera variable para mensajes con el nivel de QoS 0.
El ID de mensaje es un entero de 16 bits sin signo que normalmente se incrementa en una unidad entre un mensaje y el siguiente, pero no es necesario que lo haga. El orden de los dos bytes del identificador de mensaje es MSB y después LSB (big-endian).
El ID de mensaje 0 (es decir, 0x0000) está reservado porque es un ID de mensaje no válido y no debe utilizarse.
En la tabla siguiente se muestra una cabecera variable de ejemplo para un mensaje PUBLISH.
Campo | Valor |
---|---|
Nombre de tema: | "a/b" |
Nivel de QoS | 1 |
ID de mensaje: | 10 |
En la tabla siguiente se muestra el formato de la cabecera variable en este caso.
Descripción | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|---|
Nombre de tema | |||||||||
byte 1 | Longitud MSB (0) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
byte 2 | Longitud LSB (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 | ID de mensaje MSB (0) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
byte 7 | ID de mensaje LSB (10) | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
Contiene los datos para la publicación. El contenido y el formato de los datos son específicos de la aplicación. El campo Longitud restante en la cabecera fija incluye tanto la cabecera variable como la longitud de carga útil.
La respuesta a un mensaje PUBLISH depende del nivel de QoS. En la tabla siguiente se muestran las respuestas esperadas.
Nivel de QoS | Respuesta esperada |
---|---|
QoS 0 | Ninguna |
QoS 1 | PUBACK |
QoS 2 | PUBREC |
Los mensajes PUBLISH pueden enviarse desde un publicador al intermediario o desde el intermediario a un suscriptor. La acción del destinatario cuando recibe un mensaje depende del nivel de QoS del mensaje:
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 en el cliente que se ha suscrito a uno o más temas y que está esperando un mensaje del intermediario.
Conceptos relacionados
WebSphere MQ Telemetry Transport
Referencia relacionada
Cabecera fija de WebSphere MQ Telemetry Transport
Cabecera variable de WebSphere MQ Telemetry Transport
Calidad de niveles de servicio y flujos de WebSphere MQ Telemetry Transport
Carga útil de WebSphere MQ Telemetry Transport
Avisos |
Marcas registradas |
Descargas |
Biblioteca |
Soporte |
Información de retorno (feedback)
![]() ![]() |
ac10970_ |