PUBLISH Mensagem de Publicação

Uma mensagem PUBLISH é enviada por um cliente a um intermediário para distribuição para assinantes interessados. Cada mensagem PUBLISH está associada a um nome de tópico (também conhecido como o Assunto ou Canal). Esse é um espaço de nomes hierárquico que define uma taxonomia de fontes de informações para as quais os assinantes podem registrar um interesse. Uma mensagem que é publicada em um nome de tópico específico é entregue para assinantes conectados para esse tópico.

Para manter a simetria, se um cliente fizer assinatura em um ou mais tópicos, várias mensagens publicadas para esses tópicos serão enviadas pelo intermediário para o cliente como uma mensagem PUBLISH.

Cabeçalho Fixo

A tabela abaixo mostra o formato do cabeçalho fixo.

bit 7 6 5 4 3 2 1 0
byte 1 Tipo de Mensagem (3) Sinalizador DUP Nível de QoS RETAIN
  0 0 1 1 0 0 1 0
byte 2 Comprimento Restante
Nível de QoS
Definido como 1.
Sinalizador DUP
Definido como (0). Isso significa que a mensagem está sendo enviada pela primeira vez.

Para mensagens com nível de QoS 1 ou 2 que estão sendo reenviadas porque foi detectado um defeito, o bit DUP está definido como 1. Isto indica ao intermediário que a mensagem pode duplicar uma mensagem que já tenha sido recebida. A importância dessas informações para o intermediário depende do nível de QoS. O bit DUP não é utilizado para mensagens com nível de QoS 0.

Sinalizador RETAIN
Definido como zero. Isso significa não reter.
Campo Comprimento Restante
O comprimento do cabeçalho variável mais o comprimento da carga útil. Ele pode ser um campo com vários bytes.

Cabeçalho Variável

O cabeçalho da variável contém os seguintes campos:

Nome do Tópico
Uma cadeia codificada por UTF.
ID da Mensagem
Presente em mensagens com nível de QoS 1 e nível de QoS 2.

Geralmente, a biblioteca de protocolos é responsável pela geração do ID da Mensagem e pelo retorno ao aplicativo de publicação, provavelmente como um identificador de retorno. Essa abordagem evita o risco de vários aplicativos, ou da publicação de encadeamentos, em execução em um único cliente que gera IDs da Mensagem duplicados.

Um ID da Mensagem não deve ser utilizado no cabeçalho variável para mensagens com nível de QoS 0.

O ID de Mensagem é um inteiro não sinalizado de 16 bits, que geralmente aumenta exatamente uma vez, de uma mensagem para a próxima, mas não é necessário fazer isso. A ordenação dos 2 bytes do Identificador de Mensagens é MSB, em seguida, LSB (big-endian).

O ID da Mensagem 0 (ou seja, 0x0000) está reservado como um ID da Mensagem inválido, e não deve ser utilizado.

A tabela abaixo mostra um cabeçalho variável de exemplo para uma mensagem PUBLISH.

Campo Value
Nome do Tópico: "a/b"
Nível de QoS 1
ID da Mensagem: 10

O formato do cabeçalho variável nesse caso é mostrado na tabela abaixo.

  Descrição 7 6 5 4 3 2 1 0
Nome do Tópico
byte 1 Comprimento MSB (0) 0 0 0 0 0 0 0 0
byte 2 Comprimento 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 Mensagens
byte 6 ID da Mensagem MSB (0) 0 0 0 0 0 0 0 0
byte 7 ID da Mensagem LSB (10) 0 0 0 0 1 0 1 0

Carga Útil

Contém os dados para publicação. O conteúdo e formato dos dados são específicos do aplicativo. O campo Comprimento Restante no cabeçalho fixo inclui o comprimento do cabeçalho variável e o comprimento da carga útil.

Resposta

A resposta a uma mensagem PUBLISH depende do nível de QoS. A tabela abaixo mostra as respostas esperadas.

Nível de QoS Resposta Esperada
QoS 0 Nenhum(a)
QoS 1 PUBACK
QoS 2 PUBREC

Ações

As mensagens PUBLISH podem ser enviadas de um editor para o intermediário, ou do intermediário para um assinante. A ação do destinatário quando ele recebe uma mensagem depende do nível de QoS da mensagem:

QoS 0
Disponibilize a mensagem para todas as partes interessadas.
QoS 1
Registre a mensagem em armazenamento persistente, disponibilize-a para todas as partes interessadas e retorne uma mensagem PUBACK para o emissor.
QoS 2
Registre a mensagem em armazenamento persistente, não a disponibilize ainda para partes interessadas e retorne uma mensagem PUBREC para o emissor.

Se o intermediário receber a mensagem, as partes interessadas indicam assinantes do tópico da mensagem PUBLISH. No caso de um assinante receber a mensagem, partes interessadas indicam o aplicativo no cliente que fez assinatura em um ou mais tópicos e está aguardando uma mensagem do intermediário.

Conceitos relacionados
WebSphere MQ Telemetry Transport
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2006 Última Atualização: 1 Sep 2006
ac10970_