Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 8488|Risposta: 0

Diversi punti di conoscenza EMQTT

[Copiato link]
Pubblicato su 15/02/2019 10:25:09 | | |
Prima di iniziare il testo, devo ringraziare il netizen "Xiaolong" e i netizen del gruppo emqtt.io per il loro aiuto, ho appena iniziato a usare MQTT. Ci sono molte cose che non capisco, quando ho chiesto la soluzione nel gruppo emqtt.io, "Xiaolong" mi ha dato una spiegazione dettagliata di alcuni punti di conoscenza di MQTT e ha fornito soluzioni, grazie mille. Penso che alcune delle cose menzionate siano ancora molto utili per i principianti, quindi ecco un riassunto della mia storia chat con "Xiaolong" per il tuo riferimento.

Domanda 1: Se l'MCU ha una cache limitata e una potenza di calcolo limitata, è impossibile inviare messaggi contemporaneamente, come si possono pubblicare messaggi tramite MQTT in questo caso?
Per prima cosa, assembla l'intestazione del protocollo di pubblicazione, scrivi la lunghezza del payload, invialo tramite TCP e poi invia il payload poco a poco. Se non riesci a ottenere la lunghezza totale del carico utile, questo è difficile. Poiché invii un report del protocollo di pubblicazione, dopo che il server legge la lunghezza del payload nella testa, continuerà a leggere fino a raggiungere la lunghezza richiesta, e allora la pubblicazione viene conteggiata. Pertanto, la necessità è prima confermare la lunghezza del contenuto che pubblichi, poi raggruppare l'intestazione del pacchetto di pubblicazione, compilare la lunghezza del payload, tcp:send(head), e infine inviare il payload uno per uno, ad esempio 1k alla volta, oppure inviare i dati secondo il normale tcp, e inviarli fino in fondo, anche se la pubblicazione è terminata. Il prossimo invio appartiene al livello TCP, e non è necessario intervenire. Se nel livello TCP l'invio fallisce, deve esserci un problema con il socket, la connessione è interrotta, devi riconnetterti al server MQTT, se non è completata, anche la sessione del server terminerà, cioè il server non ha ricevuto i dati. Riconnetti, devi riinviare il messaggio, finché è disconnesso, devi riconnetterti, se vuoi riinviare i dati dipende dal fatto che hai salvato i dati precedenti. Inoltre, se il messaggio è importante, puoi usare qos=1 o 2 per assicurarti che il server riceva il messaggio, qos=1 richiede un viaggio andata e ritorno, qos=2 ne richiede quattro, qos=0 è molto semplice, finché lo invii, non importa.

Domanda 2: Esistono molte risorse open source per MQTT?

Il login del link ipertestuale è visibile.Ce ne sono molti

Domanda 3: Perché MQTT generalmente non fornisce funzioni di persistenza?

Il protocollo MQTT è progettato secondo il design online del dispositivo e i dati vengono memorizzati in memoria

Domanda 4: MQTT consuma molto la memoria?

MQTT consuma più memoria e i dati misurati di emqtt sono: 38W, memoria per 14G, CPU 15%

Domanda 5: Qual è il rapporto tra sessione e cliente?

Ad esempio, se una scheda, come client, avvia una richiesta di connessione MQTT per collegarsi al server MQTT, ad esempio è un servizio EMQTT, dopo che il server EMQTT riceve la richiesta di connessione di questa scheda, stabilirà una connessione TCP con la scheda sul livello TCP, e all'interno di EMQTT verrà generato un processo per comunicare con questa scheda, e verrà generato anche un processo, chiamato session. Questa sessione è un tema specializzato nella gestione dell'abbonamento a questa lavagna, e anche altri consigli lo invieranno alla sessione corrispondente a questa bacheca se pubblicano l'argomento di interesse per questa tavola; se questa sessione riceve l'argomento sottoscritto e scopre che il client è ancora attivo, invierà i dati attraverso questo client tramite TCP a questa scheda; se si scopre che il client non è più presente, cioè la scheda e il server sono danneggiati. Poi la sessione salverà prima l'argomento dell'abbonamento ricevuto nella sessione, e la prossima volta che la bacheca sarà connessa, e cleansession=false, la sessione non verrà cancellata, e quando si connette questa volta, il messaggio di abbonamento precedentemente ricevuto verrà inviato alla lavagna, che probabilmente è ciò che significa.

Domanda 6: Come fa emqtt a sapere che il client connesso è lo stesso?

Durante la connessione, devi impostare un ID client, questo ID può rimanere inimpostato, se non impostato, un ID unico verrà generato automaticamente sul lato server emqtt; se vuoi usare la sessione, devi avere un ID univoco, puoi usare IMEI. Se devi ricevere messaggi offline, devi usare un ID definito.

Domanda 7: L'orario della sessione di emqtt può essere modificato?

Puoi cambiare l'orario della sessione, ora sono 48 ore, puoi cambiarlo a una settimana, se vuoi che sia permanente, temo che EMQTT non sia adatto.

Domanda 8: Il permesso di accesso di emqtt è scritto nel file di configurazione?

etc/acl.config

Domanda 9: Qual è la distribuzione di emqtt?

Distribuito significa semplicemente collegare insieme diversi dei tuoi server, uno o più di essi, finché non sono tutti rotti, emqtt può funzionare normalmente. I dati EMQTT sono condivisi da diversi nodi e, se c'è un problema con un nodo, i dati non verranno persi, ma i dati di sessione sul nodo andranno persi.









Precedente:Prima conoscenza della coda di messaggi EMQX (EMQTTD)
Prossimo:Note di studio su jQuery
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com