Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 8488|Resposta: 0

Vários pontos de conhecimento EMQTT

[Copiar link]
Publicado em 15/02/2019 10:25:09 | | |
Antes de começar o texto, preciso agradecer ao internauta "Xiaolong" e aos internautas do grupo emqtt.io pela ajuda, acabei de começar a usar o MQTT. Há muitas coisas que não entendo, quando perguntei sobre a solução no grupo emqtt.io, "Xiaolong" me deu uma explicação detalhada de alguns pontos de conhecimento sobre o MQTT e deu soluções, muito obrigado. Acho que algumas das coisas mencionadas ainda são muito úteis para iniciantes, então aqui está um resumo do meu histórico de conversas com "Xiaolong" para sua referência.

Pergunta 1: Se o MCU tem cache e poder de processamento limitados, é impossível enviar mensagens de uma vez, como publicar mensagens pelo MQTT nesse caso?
Primeiro, montar o cabeçalho do protocolo public, escrever o comprimento da carga útil nele, enviá-la pelo TCP e então enviar a carga útil aos poucos. Se você não conseguir obter o comprimento total da carga útil, isso é difícil. Como você envia um relatório de protocolo de publicação, depois que o servidor lê o comprimento da carga útil na cabeça, ele continuará lendo até atingir o comprimento necessário, e então a publicação é contada. Portanto, sua necessidade é primeiro confirmar o comprimento do conteúdo que você publica, depois agrupar o cabeçalho do pacote publicar, preencher o comprimento do payload, tcp:send(head), e então enviar o payload um por um, como 1k por vez, ou enviar os dados conforme o TCP normal, e enviar até o fim, mesmo que a publicação tenha terminado. O próximo envio pertence à camada TCP, e você não precisa intervir. Se na camada TCP o envio falhar, deve haver um problema com o soquete, a conexão estiver quebrada, você precisa se reconectar ao servidor MQTT; se não for concluído, a sessão do servidor também termina, ou seja, o servidor não recebeu os dados. Reconectar, você precisa reenviar a mensagem, desde que esteja desconectada, você precisa reconectar, se quer reenviar os dados, depende se você salvou os dados anteriores. Além disso, se a mensagem for importante, você pode usar qos=1 ou 2 para garantir que o servidor receba a mensagem, qos=1 requer uma ida e volta, qos=2 precisa de quatro idas e voltas, qos=0 é muito simples, desde que você envie, não importa.

Pergunta 2: Existem muitos recursos open source para MQTT?

O login do hiperlink está visível.São muitos

Pergunta 3: Por que o MQTT geralmente não fornece funções de persistência?

O protocolo MQTT é projetado de acordo com o design online do dispositivo, e os dados são armazenados na memória

Pergunta 4: O MQTT consome memória?

O MQTT consome mais memória, e os dados medidos do emqtt são: 38W, memória responsável por 14G, CPU 15%

Pergunta 5: Qual é a relação entre a sessão e o cliente?

Por exemplo, se você tem uma placa, como cliente, iniciar uma requisição de conexão MQTT para se conectar ao servidor MQTT, por exemplo, se for um serviço EMQTT, após o servidor EMQTT receber a solicitação de conexão dessa placa, ele estabelecerá uma conexão TCP com a placa na camada TCP, e dentro do EMQTT, um processo será gerado para se comunicar com essa placa, e um processo também será gerado, chamado session. Este sessoin é um tema especializado na gestão da assinatura deste quadro, e outros conselhos também o enviarão para a sessão correspondente a este fórum se publicarem o tema de interesse para este fórum; se essa sessão receber o tópico assinado e descobrir que o cliente ainda está vivo, ele enviará os dados através desse cliente via TCP para esse quadro; se for constatado que o cliente não está mais lá, ou seja, o quadro e o servidor estiverem quebrados. Depois, a sessão salvará primeiro o tópico da assinatura recebida na sessão, e na próxima vez que o quadro for conectado, e cleansession=false, a sessão não será limpa, e ao conectar dessa vez, a mensagem de assinatura recebida anteriormente será enviada ao quadro, o que provavelmente significa isso.

Pergunta 6: Como o emqtt sabe que o cliente conectado é o mesmo?

Ao conectar, você precisa definir um ID de cliente, esse ID pode ficar desconfigurado, se não for definido, um ID único será gerado automaticamente no servidor emqtt; se quiser usar a sessão, deve ter um ID único, pode usar IMEI. Se você precisar receber mensagens offline, deve usar um ID definido.

Pergunta 7: O tempo da sessão do EMQTT pode ser modificado?

Você pode mudar o horário da sessão, agora é 48 horas, pode mudar para uma semana, se quiser que seja permanente, receio que o EMQTT não seja adequado.

Pergunta 8: A permissão de acesso do emqtt está escrita no arquivo de configuração?

etc/acl.config

Pergunta 9: Qual é a distribuição do emqtt?

Distribuído significa simplesmente conectar vários dos seus servidores, qualquer um ou mais deles, desde que não estejam todos quebrados, o emqtt pode rodar normalmente. Os dados EMQTT são compartilhados por vários nós e, se houver um problema com um nó, os dados não serão perdidos, mas os dados da sessão no nó serão perdidos.









Anterior:Primeiro contato com a fila de mensagens EMQX (EMQTTD)
Próximo:Notas do estudo do jQuery
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com