El mensaje SUBSCRIBE permite a un cliente registrar un interés en uno o más nombres de temas con el intermediario. Los mensajes publicados en estos temas se entregan desde el intermediario al cliente como mensajes PUBLISH. El mensaje SUBSCRIBE también especifica el nivel de QoS en el que el suscriptor desea recibir los mensajes publicados.
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 (8) | Distintivo DUP | Nivel de QoS | RETAIN | ||||
1 | 0 | 0 | 0 | 0 | 0 | 1 | x | |
byte 2 | Longitud restante |
La cabecera variable contiene un ID de mensaje porque un mensaje SUBSCRIBE tiene un nivel de QoS 1.
Normalmente, la biblioteca de protocolos genera el ID de mensaje y lo pasa a la aplicación de publicación, por ejemplo, como manejador de retorno. Esto impide que varias aplicaciones o varias hebras de publicación que se ejecutan en un cliente individual generen ID de mensaje duplicados.
El ID de mensaje 0 (0x0000) está reservado porque es un ID de mensaje no válido y no debe utilizarse. 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. Los dos bytes del ID de mensaje se ordenan como MSB, seguidos de LSB (big endian).
En la tabla siguiente se muestra un formato de ejemplo para la cabecera variable con el ID de mensaje 10.
Descripción | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|---|
Identificador de mensaje | |||||||||
byte 1 | ID de mensaje MSB (0) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
byte 2 | ID de mensaje LSB (10) | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
La carga útil del mensaje SUBSCRIBE contiene una lista de nombres de temas al que el cliente desea suscribirse y el nivel de QoS en el que el cliente desea recibir los mensajes. Las series están codificadas en UTF y el nivel de QoS ocupa 2 bits de un solo byte. Estos pares de tema/QoS se empaquetan contiguamente como se muestra en el ejemplo de carga útil que se muestra en la tabla siguiente.
Nombre de tema | "a/b" |
QoS solicitado | 1 |
Nombre de tema | "c/d" |
QoS solicitado | 2 |
Los nombres de tema en un mensaje SUBSCRIBE no están comprimidos.
En la tabla siguiente se muestra el formato de la carga útil de ejemplo.
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 |
QoS solicitado | |||||||||
byte 6 | QoS solicitado (1) | x | x | x | x | x | x | 0 | 1 |
Nombre de tema | |||||||||
byte 7 | Longitud MSB (0) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
byte 8 | Longitud LSB (3) | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
byte 9 | 'c' (0x63) | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 |
byte 10 | '/' (0x2F) | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 |
byte 11 | 'd' (0x64) | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 |
QoS solicitado | |||||||||
byte 12 | QoS solicitado (2) | x | x | x | x | x | x | 1 | 0 |
Suponiendo que se otorga el nivel de QoS solicitado, el cliente recibe mensajes PUBLISH con un nivel menor o igual a este, en función del nivel de QoS del mensaje original del publicador. Por ejemplo, si un cliente tiene una suscripción con un nivel de QoS 1 para un tema concreto, un mensaje PUBLISH de nivel de QoS 0 para dicho tema se entrega al cliente en el nivel de QoS 0. Un mensaje PUBLISH de nivel de QoS 2 para el mismo tema se degrada hasta nivel de QoS 1 para su entrega al cliente.
Un corolario a esto es que la suscripción a un tema a nivel de QoS 2 es equivalente a decir "Me gustaría recibir mensajes sobre este tema al nivel de QoS en el que se publican".
El campo QoS solicitado está codificado en el byte que sigue a cada nombre de tema codificado UTF, como se muestra en la tabla siguiente.
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Reservado | Reservado | Reservado | Reservado | Reservado | Reservado | Nivel de QoS | ||
x | x | x | x | x | x |
Los 6 bits superiores de este byte no se utilizan en la versión actual del protocolo. Se reservan para un uso futuro.
Cuando recibe un mensaje SUBSCRIBE de un cliente, el intermediario responde con un mensaje SUBACK.
Conceptos relacionados
WebSphere MQ Telemetry Transport
Referencia relacionada
PUBLISH - Mensaje de publicación
Calidad de niveles de servicio y flujos de WebSphere MQ Telemetry Transport
Cabecera fija de WebSphere MQ Telemetry Transport
Cabecera variable de WebSphere MQ Telemetry Transport
Carga útil de WebSphere MQ Telemetry Transport
Avisos |
Marcas registradas |
Descargas |
Biblioteca |
Soporte |
Información de retorno (feedback)
![]() ![]() |
ac11010_ |