Comunicação entre protocolos entre clientes MQTT e clientes Web PubSub
Às vezes, você gostaria de ter clientes MQTT e outros clientes usando os protocolos do Azure Web PubSub juntos em um hub, permitindo a comunicação entre protocolos. Este documento define como funciona essa comunicação.
Conceitos
Primeiro, vamos esclarecer os conceitos no contexto da comunicação entre protocolos.
- Clientes MQTT: Clientes que usam protocolos MQTT .
- Clientes do Web PubSub: clientes que usam os próprios protocolos do Web PubSub com recursos do pub/sub. Os exemplos incluem
json.webpubsub.azure.v1
,protobuf.webpubsub.azure.v1
,json.reliable.webpubsub.azure.v1
eprotobuf.reliable.webpubsub.azure.v1
. Você pode encontrar uma visão geral dos protocolos de cliente do Web PubSub aqui. - Clientes confiáveis do Web PubSub: um subconjunto de clientes do Web PubSub que usam protocolos confiáveis do Web PubSub, especificamente
json.reliable.webpubsub.azure.v1
, eprotobuf.reliable.webpubsub.azure.v1
.
Mapeamentos de conceito
Comportamento de roteamento de mensagens
Na Visão geral: MQTT no Serviço Web PubSub do Azure, aprendemos que ingressar em um grupo nos protocolos do Web PubSub funciona da mesma forma que assinar o mesmo tópico nomeado no MQTT. Da mesma forma, enviar para um grupo significa publicar no mesmo tópico nomeado. Isso significa que se um cliente que usa protocolos Web PubSub ingressar no grupo a
, ele receberá mensagens de clientes MQTT enviando para o tópico a
e vice-versa.
Conversão de tipo de conteúdo de mensagem
Nos protocolos Web PubSub, há quatro tipos de dados de mensagem: Texto, Binário, JSON e Protobuf.
Nos protocolos MQTT, não há campo para indicar o tipo de conteúdo da mensagem no MQTT 3.1.1, mas há um campo de "tipo de conteúdo" da string no MQTT 5.0.
Aqui está a conversão entre o campo "tipo de conteúdo" MQTT e o tipo de dados de mensagem Web PubSub:
MQTT "tipo de conteúdo" | Web PubSub "tipo de dados de mensagem" |
---|---|
application/json |
JSON |
text/plain |
Texto |
application/x-protobuf |
Protobuf |
application/octet-stream |
Binário |
Ausente ou MQTT 3.1.1 | Binário |
Conversão de conteúdo de mensagem
Para tipos de dados de mensagem Web PubSub baseados em texto, incluindo Text
e Json
, eles são convertidos de e para MQTT pela codificação UTF-8. Para tipos de dados de mensagem do Web PubSub baseados em binário, incluindo Protobuf
e Binary
, eles permanecem exatamente os mesmos no conteúdo da mensagem MQTT.
Conversão de QoS (qualidade de serviço) de mensagem
Nos protocolos Web PubSub, a QoS de uma mensagem que um cliente recebe é determinada pelo protocolo do cliente. Clientes confiáveis obtêm apenas mensagens de QoS 1, enquanto outros clientes obtêm apenas mensagens de QoS 0.
Nos protocolos MQTT, a QoS de uma mensagem que um cliente recebe é determinada pela QoS da mensagem (QoS de envio) e pela QoS de assinatura concedida, especificamente o menor valor das duas.
Quando as mensagens são transferidas entre protocolos, a QoS recebida é definida da seguinte maneira:
Remetente da mensagem | Receptor de mensagens | Avaliação de QoS |
---|---|---|
Clientes MQTT | Clientes confiáveis do Web PubSub | QoS é sempre 1 |
Clientes MQTT | Outros clientes do Web PubSub | QoS é sempre 0 |
Clientes Web PubSub | Clientes MQTT | Min(1, QoS de assinatura concedida) |
Others
As propriedades de mensagem listadas aqui entram em vigor em todos os protocolos. Os outros não.
- Intervalo de expiração da mensagem MQTT