Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 8488|Respuesta: 0

Varios puntos de conocimiento EMQTT

[Copiar enlace]
Publicado en 15/2/2019 10:25:09 | | |
Antes de empezar el texto, debo agradecer al internauta "Xiaolong" y a los internautas del grupo emqtt.io por su ayuda, acabo de empezar a usar MQTT. Hay muchas cosas que no entiendo, cuando pregunté por la solución en el grupo de emqtt.io, "Xiaolong" me dio una explicación detallada de algunos puntos de conocimiento sobre MQTT y ofreció soluciones, muchas gracias. Creo que algunas de las cosas mencionadas siguen siendo muy útiles para principiantes, así que aquí tienes un resumen de mi historial de chats con "Xiaolong" para tu referencia.

Pregunta 1: Si el MCU tiene caché y potencia de procesamiento limitadas, es imposible enviar mensajes de una vez, ¿cómo publicar mensajes a través de MQTT en este caso?
Primero, ensamblar la cabecera del protocolo publicación, escribir la longitud de la carga útil en él, enviarla a través de TCP y luego enviar la carga útil poco a poco. Si no puedes obtener la longitud total de la carga útil, esto es difícil. Como envías un informe de protocolo de publicación, después de que el servidor lea la longitud de la carga útil en el cabezal, seguirá leyendo hasta alcanzar la longitud requerida, y entonces se cuenta la publicación. Por lo tanto, primero confirmas la longitud del contenido que publicas, luego agrupas la cabecera del paquete de publicación, rellenas la longitud de la carga útil, tcp:send(head), y después envías la carga útil una por una, como 1k cada vez, o enviar los datos según el TCP normal, y enviarlos hasta el final, incluso si la publicación ya ha terminado. El siguiente envío pertenece a la capa TCP, y no necesitas intervenir. Si en la capa TCP falla el envío, debe haber un problema con el socket, la conexión está rota, tienes que volver a conectar al servidor MQTT; si no termina, la sesión del servidor también terminará, es decir, el servidor no ha recibido los datos. Reconectar, tienes que reenviar el mensaje, mientras esté desconectado, tienes que reconectarte, si quieres reenviar los datos depende de si has guardado los datos anteriores. Además, si el mensaje es importante, puedes usar qos=1 o 2 para asegurarte de que el servidor reciba el mensaje, qos=1 requiere un viaje de ida y vuelta, qos=2 necesita cuatro viajes de ida y vuelta, qos=0 es muy sencillo, mientras lo envíes, no importa.

Pregunta 2: ¿Existen muchos recursos de código abierto para MQTT?

El inicio de sesión del hipervínculo es visible.Hay muchos

Pregunta 3: ¿Por qué MQTT generalmente no proporciona funciones de persistencia?

El protocolo MQTT está diseñado según el diseño en línea del dispositivo, y los datos se almacenan en memoria

Pregunta 4: ¿Consume la memoria MQTT?

MQTT consume más memoria, y los datos medidos de emqtt son: 38W, la memoria representa 14G, CPU el 15%

Pregunta 5: ¿Cuál es la relación entre la sesión y el cliente?

Por ejemplo, si tienes una placa, como cliente, inicia una solicitud de conexión MQTT para conectarse al servidor MQTT, por ejemplo, es un servicio EMQTT; tras recibir la solicitud de conexión de esta placa, el servidor EMQTT establecerá una conexión TCP con la placa en la capa TCP, y dentro de EMQTT se generará un proceso para comunicarse con esta placa, y también se generará un proceso llamado sesión. Esta sesión es un tema especializado en gestionar la suscripción de este tablero, y otros consejos también lo enviarán a la sesión correspondiente si publican el tema de interés para este tablero; si esta sesión recibe el tema suscrito y descubre que el cliente sigue vivo, enviará los datos a través de este cliente a través de TCP a este tablero; si se detecta que el cliente ya no está, es decir, el tablero y el servidor están rotos. Luego la sesión guardará primero el tema de suscripción recibido en la sesión, y la próxima vez que el tablero esté conectado y cleansession=false, entonces la sesión no se limpiará, y al conectarse esta vez, el mensaje de suscripción recibido previamente se enviará al tablero, que probablemente sea lo que significa.

Pregunta 6: ¿Cómo sabe emqtt que el cliente conectado es el mismo?

Al conectar, necesitas establecer un ID de cliente, este ID puede quedar sin activar; si no se activa, se generará automáticamente un ID único en el lado del servidor emqtt; si quieres usar sesión, debes tener un ID único, puedes usar IMEI. Si debes recibir mensajes offline, debes usar un ID definido.

Pregunta 7: ¿Se puede modificar la hora de la sesión de emqtt?

Puedes cambiar la hora de la sesión, ahora son 48 horas, puedes cambiarla a una semana, si quieres que sea permanente, me temo que EMQTT no es adecuado.

Pregunta 8: ¿El permiso de acceso de emqtt está escrito en el archivo de configuración?

etc/acl.config

Pregunta 9: ¿Cuál es la distribución de emqtt?

Distribuido simplemente significa conectar varios de tus servidores, uno o más de ellos, mientras no estén todos rotos, emqtt puede funcionar normalmente. Los datos EMQTT se comparten entre varios nodos, y si hay un problema con un nodo, los datos no se perderán, pero sí los datos de sesión en ese nodo.









Anterior:Primer contacto con la cola de mensajes EMQX (EMQTTD)
Próximo:Notas del estudio de jQuery
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com