Níveis e Fluxos da Qualidade de Serviço

O entrega mensagens de acordo com os níveis definidos em um QoS (Qualidade de Serviço).Os níveis são descritos abaixo:

Nível 0 de QoS : entrega "No máximo uma vez"

As mensagens são entregues de acordo com os melhores esforços da rede TCP/IP subjacente. Uma resposta não é esperada e nenhuma semântica de nova tentativa está definida no protocolo. A mensagem chega no intermediário uma vez ou nunca chega.

Nível 1 de QoS: entrega "No mínimo uma vez"

O recebimento de uma mensagem pelo intermediário e seu posicionamento em uma fila do se aplicável, é confirmado por uma mensagem PUBACK.Se houver um defeito identificado do link de comunicações ou do dispositivo de envio, ou se a mensagem de confirmação não for recebida após um período de tempo especificado, o emissor reenviará a mensagem com o conjunto de bits DUP no cabeçalho da mensagem. A mensagem chega no intermediário pelo menos uma vez.

Nível 2 de QoS: entrega "Exatamente uma vez"

Os fluxos de protocolos adicionais acima do nível de QoS 1 asseguram que mensagens duplicadas não sejam entregues para o aplicativo de recebimento. Este é o mais alto nível de entrega, para utilização quando mensagens duplicadas não forem aceitáveis. Ocorre um aumento no tráfego da rede, mas geralmente é aceitável, devido à importância do conteúdo da mensagem.

Algumas classes de defeito podem causar a não-entrega de mensagens com o nível de QoS 1 ou 2.

Uma mensagem com nível de QoS 1 ou 2 possui um ID de Mensagem no cabeçalho da mensagem.

Suposições para os Níveis 1 e 2 de QoS

Antes de desenvolver um aplicativo que utiliza o , você deve estar ciente das suposições sobre o QoS níveis 1 e 2.

Alguns aspectos de entrega "garantida" e "confiável" estão cheios de problemas. É difícil obter uma entrega "garantida" em cada circunstância devido à ocorrência de janelas "in doubt", nas quais um dispositivo falha e o sistema fica em um estado em que uma extremidade do link não sabe o que está acontecendo na outra extremidade. Precisamos fazer algumas suposições sobre a confiança dos dispositivos e redes envolvidos na entrega de mensagens e concluir que existe uma boa chance de entregar mensagens de forma confiável.

O assume que o cliente e o intermediário geralmente são confiáveis e que o canal de comunicações provavelmente parece não ser confiável.Se o dispositivo de cliente falhar, provavelmente será por um defeito catastrófico, em vez de um transitório. A possibilidade de recuperar dados do dispositivo é pequena. Alguns dispositivos possuem armazenamento não-volátil, por exemplo, ROM flash. A provisão de armazenamento mais persistente no dispositivo do cliente protege os dados mais importantes contra alguns modos de defeito.

Além do defeito básico do link de comunicações, a matriz do modo de defeito se torna complexa, resultando em mais cenários do que a especificação para pode tratar.

Novas Tentativas

O atraso de tempo antes de reenviar uma mensagem cujo recebimento não foi confirmado é específico do aplicativo e não é definido pela especificação de protocolo.

fluxos de protocolos de QoS

Os níveis de QoS são suportados por fluxos de protocolos que definem a seqüência de fluxos de mensagens entre o cliente e o intermediário.

Fluxo de protocolo de nível 0 de QoS

A tabela abaixo mostra o fluxo de protocolo de nível 0 de QoS.

Client Mensagem e Direção Intermediário
QoS = 0

PUBLISH
---------->

Ação: Publicar mensagem para assinantes

Fluxo de Protocolo de Nível 1 de QoS

A tabela abaixo mostra o fluxo de protocolo de nível 1 de QoS

Client Mensagem e Direção Intermediário

QoS = 1
DUP = 0
ID da Mensagem = x

PUBLISH
---------->

Ação: Publicar mensagem para assinantes
Ação: Descartar mensagem

PUBACK
<----------

 

Se o cliente não receber uma mensagem PUBACK (em um período de tempo definido no aplicativo, ou se for detectado um defeito e a sessão de comunicação for iniciada novamente), o cliente reenviará a mensagem PUBLISH com o conjunto de sinalizadores DUP.

Quando ele recebe uma mensagem duplicada do cliente, o intermediário publica novamente a mensagem para os assinantes e envia outra mensagem PUBACK.

Fluxo de Protocolo de Nível 2 de QoS

A tabela abaixo mostra o fluxo de protocolo de nível 2 de QoS.

Client Mensagem e Direção Intermediário

QoS = 2
DUP = 0
ID da Mensagem = x

PUBLISH
---------->

Ação: Registrar mensagem em armazenamento persistente
 

PUBREC
<----------

ID da Mensagem = x
ID da Mensagem = x

PUBREL
---------->

Ação: Publicar mensagem para assinantes
Ação: descartar mensagem

PUBCOMP
<----------

ID da Mensagem = x

Se for detectado um defeito, ou após um período de tempo definido, cada parte do fluxo do protocolo será tentada novamente com o conjunto de bits DUP. Os fluxos de protocolo adicionais asseguram que a mensagem seja entregue aos assinantes apenas uma vez. As mensagens SUBSCRIBE e UNSUBSCRIBE utilizando o nível QoS 1.

Conceitos relacionados

Referências relacionadas
Cabeçalho Variável do
Mensagens de Comando