MQTT: mudanças entre as edições

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
Linha 13: Linha 13:
Conceitos básicos <ref name=LAMPKIN/>:
Conceitos básicos <ref name=LAMPKIN/>:


* '''Publicador/Subscritor''': O protocolo MQTT é baseado no princípio de '''publicar mensagens''' ('''Publisher''') e '''subscrever tópicos''' ('''Subscriber''') para receber mensagens, conhecido como '''modelo Publisher/Subscriber'''.  
* '''Publicador/Subscritor''': O protocolo MQTT é baseado no princípio de '''publicar mensagens''' ('''publisher''') e '''subscrever tópicos''' ('''subscriber''') para receber mensagens, conhecido como '''modelo publisher/subscriber'''.  
*:Um cliente pode subscrever tópicos e receber  mensagens de atualizações quando algo for publicado sobre este tópico. Alternativamente, um cliente pode publicar mensagens relativas a um dado tópico e deixá-la disponível para os assinantes.
*:Um cliente pode subscrever tópicos e receber  mensagens de atualizações quando algo for publicado sobre este tópico. Alternativamente, um cliente pode publicar mensagens relativas a um dado tópico e deixá-la disponível para os assinantes.


* '''Tópicos e subscrições''': As mensagens MQTT são publicadas em '''tópicos''' ('''Topic'''), que são áreas de interesse.  
* '''Tópicos e subscrições''': As mensagens MQTT são publicadas em '''tópicos''' ('''topic'''), que são áreas de interesse.  
*:Os clientes, por sua vez, assinam para receber mensagens de uma dada subscrição. As subscrições podem ser explicitas, ou organizadas  hierarquicamente, com o cliente usando '''wildcards''' ('''#''') para receber mensagens de uma variedade de tópicos.
*:Os clientes, por sua vez, assinam para receber mensagens de uma dada subscrição. As subscrições podem ser explicitas, ou organizadas  hierarquicamente, com o cliente usando '''wildcards''' ('''#''') para receber mensagens de uma variedade de tópicos.
*:*topic: /casa/terreo/cozinha/temperatura
*:*'''topic''': /casa/terreo/cozinha/temperatura
*:*wildcard: /casa/terreo/#
*:*'''wildcard''': /casa/terreo/#


* '''Qualidade de Serviço''': O MQTT define três níveis de Qualidade de Serviço ('''QoS'''):  
* '''Qualidade de Serviço''': O MQTT define três níveis de Qualidade de Serviço ('''QoS'''):  
*:*(0) '''''best effort''''', envia a mensagem uma vez;
*:*(0) ''best effort'', envia a mensagem uma vez;
*:*(1) envia a mensagem várias vezes;
*:*(1) envia a mensagem várias vezes;
*:*(2) assegura o recebimento da mensagem.
*:*(2) assegura o recebimento da mensagem.
Linha 28: Linha 28:
*'''Retem as mensagens''': Mantém as mensagens enviadas no '''brocker''' mesmo depois de enviada a todos os subscritores.
*'''Retem as mensagens''': Mantém as mensagens enviadas no '''brocker''' mesmo depois de enviada a todos os subscritores.


*'''Conexões duráveis e sessões limpas''': Quando um cliente se conecta a um servidor e seta o ''clean session flag'' como ''true''. Desta forma, quando desconectar, todas as subscrições serão removidas. Se o ''clean session flag'' for ''false'' a conexão é tratada como durável e as subscrições do cliente continuam mesmo após uma desconexão.
*'''Conexões duráveis e sessões limpas''': Quando um cliente se conecta a um servidor e seta o ''clean session flag = true''. Desta forma, quando desconectar, todas as subscrições serão removidas. Se o ''clean session flag = false'' a conexão é tratada como durável e as subscrições do cliente continuam mesmo após uma desconexão.


*'''Wills''': Quando um cliente se conecta a um servidor e pode informar que possui uma '''will''', isto é, mensagens importantes que deveriam ser publicadas, mesmo em caso de desconexão involuntária. Isto é importante para '''sensores de alerta''', que informam o sistema caso percam o contato com a rede.  
*'''Wills''': Quando um cliente se conecta a um servidor e pode informar que possui uma '''will''', isto é, mensagens importantes que deveriam ser publicadas, mesmo em caso de desconexão involuntária. Isto é importante para '''sensores de alerta''', que informam o sistema caso percam o contato com a rede.  


O modelo '''publisher/Ssbscriber''' oferece uma alternativa ao modelo '''cliente/servidor'''. No modelo '''cliente/servidor''' o cliente se comunica diretamente o servidor num serviço fim a fim. No modelo '''publisher/subscriber''' o '''publicador''' e o '''subscritor''' não se comunicam diretamente. A comunicação é realizada por um terceiro componente, o '''brocker''' <ref name=MQTT_Essentials/>.
O modelo '''publisher/subscriber''' oferece uma alternativa ao modelo '''cliente/servidor'''. No modelo '''cliente/servidor''' o cliente se comunica diretamente o servidor num serviço fim a fim. No modelo '''publisher/subscriber''' o '''publicador''' e o '''subscritor''' não se comunicam diretamente. A comunicação é realizada por um terceiro componente, o '''brocker''' <ref name=MQTT_Essentials/>.


==Referências==
==Referências==

Edição das 17h04min de 2 de abril de 2020

MQTT - Message Queue Telemetry Transport

MQTT (Message Queue Telemetry Transport) é um protocolo de mensagens para sensores e pequenos dispositivos móveis, baseado no modelo Publicador/Subscritor, ideal para aplicações de Internet das Coisas, em particular para a comunicação máquina a máquina (M2M - Machine to Machine).

Referências:

As aplicações de Internet das Coisas podem envolver abordagens avançadas de telemetria, de forma a poder conectar diferentes dispositivos inteligentes em atividades de sensoreamento, monitoramento e controle, além da conexão dos mesmos a Internet ou a sistemas de controle central [1].

MQTT - Conceitos básicos

Conceitos básicos [1]:

  • Publicador/Subscritor: O protocolo MQTT é baseado no princípio de publicar mensagens (publisher) e subscrever tópicos (subscriber) para receber mensagens, conhecido como modelo publisher/subscriber.
    Um cliente pode subscrever tópicos e receber mensagens de atualizações quando algo for publicado sobre este tópico. Alternativamente, um cliente pode publicar mensagens relativas a um dado tópico e deixá-la disponível para os assinantes.
  • Tópicos e subscrições: As mensagens MQTT são publicadas em tópicos (topic), que são áreas de interesse.
    Os clientes, por sua vez, assinam para receber mensagens de uma dada subscrição. As subscrições podem ser explicitas, ou organizadas hierarquicamente, com o cliente usando wildcards (#) para receber mensagens de uma variedade de tópicos.
    • topic: /casa/terreo/cozinha/temperatura
    • wildcard: /casa/terreo/#
  • Qualidade de Serviço: O MQTT define três níveis de Qualidade de Serviço (QoS):
    • (0) best effort, envia a mensagem uma vez;
    • (1) envia a mensagem várias vezes;
    • (2) assegura o recebimento da mensagem.
  • Retem as mensagens: Mantém as mensagens enviadas no brocker mesmo depois de enviada a todos os subscritores.
  • Conexões duráveis e sessões limpas: Quando um cliente se conecta a um servidor e seta o clean session flag = true. Desta forma, quando desconectar, todas as subscrições serão removidas. Se o clean session flag = false a conexão é tratada como durável e as subscrições do cliente continuam mesmo após uma desconexão.
  • Wills: Quando um cliente se conecta a um servidor e pode informar que possui uma will, isto é, mensagens importantes que deveriam ser publicadas, mesmo em caso de desconexão involuntária. Isto é importante para sensores de alerta, que informam o sistema caso percam o contato com a rede.

O modelo publisher/subscriber oferece uma alternativa ao modelo cliente/servidor. No modelo cliente/servidor o cliente se comunica diretamente o servidor num serviço fim a fim. No modelo publisher/subscriber o publicador e o subscritor não se comunicam diretamente. A comunicação é realizada por um terceiro componente, o brocker [2].

Referências

  1. 1,0 1,1 1,2 Valerie Lampkin; Weng Tat Leong; Leonardo Olivera; Sweta Rawat; Nagesh Subrahmanyam; Rong Xiang. Building Smarter Planet Solutions with MQTT and IBM WebSphere MQ Telemetry, ibm.com/redbooks, 2012.
  2. 2,0 2,1 MQTT Essentials: The Ultimate Kickstart For MQTT Beginners, https://www.hivemq.com/mqtt-essentials/.

Evandro.cantu (discussão) 11h27min de 25 de março de 2020 (-03)