この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 8488|答える: 0

いくつかのEMQTT知識ポイント

[リンクをコピー]
掲載地 2019/02/15 10:25:09 | | |
本文を始める前に、ネットユーザーの「Xiaolong」さんと emqtt.io グループのネットユーザーの皆さんに感謝したいと思います。私はMQTTを使い始めたばかりです。理解できないことがたくさんあります。emqtt.io グループで解決策について尋ねたところ、「Xiaolong」がMQTTの知識ポイントを詳しく説明し、解決策を提供してくれました。本当にありがとうございます。 この中で言及されている内容のいくつかは初心者にとっても非常に役立つと思いますので、参考のために「Xiaolong」とのチャット履歴をまとめます。

質問1:MCUのキャッシュと処理能力が限られている場合、一度にメッセージを送信することは不可能ですが、この場合MQTTを通じてメッセージをどう公開すればよいのでしょうか?
まず、パブリッシュプロトコルのヘッダーを組み立て、ペイロードの長さを書き込み、TCP経由で送信し、ペイロードを少しずつ送信します。 もしペイロードの総長を把握できなければ、これは難しいです。 パブリッシュプロトコルレポートを送信するため、サーバーがヘッド内のペイロードの長さを読み取った後、必要な長さに達するまで読み続け、その後パブリッシュがカウントされます。 したがって、まず公開するコンテンツの長さを確認し、その後パブリッシュパケットヘッダーをグループ化し、ペイロードの長さ、tcp:send(head)を入力し、ペイロードを1kずつ送信するか、通常のTCP通りにデータを送り、パブリッシュが終わっても最後まで送信する必要があります。 次の送信はTCP層に割り当てられ、あなたが介入する必要はありません。 TCP層で送信が失敗した場合、ソケットに問題がある、接続が切れている可能性があり、MQTTサーバーに再接続する必要があります。もし接続が完了しなければ、サーバーセッションも終了し、つまりサーバーはデータを受信していません。 再接続するにはメッセージを再送信しなければなりません。切断されている限り、再接続しなければなりません。再送信するかどうかは、前のデータを保存しているかどうかによります。 また、メッセージが重要な場合は、qos=1か2を使ってサーバーがメッセージを受け取るようにできます。qos=1は1回の往復、qos=2は4回の往復が必要です。qos=0は非常にシンプルで、送信さえすれば問題ありません。

質問2:MQTT向けのオープンソースリソースは多いですか?

ハイパーリンクのログインが見えます。たくさんあります

質問3:なぜMQTTは一般的に永続化関数を提供しないのですか?

MQTTプロトコルはデバイスのオンライン設計に基づいて設計されており、データはメモリに保存されます

質問4:MQTTはメモリを消費しますか?

MQTTはメモリ消費が大きく、emqttの測定データは38W、メモリが14G、CPUが15%です

質問5:セッションとクライアントの関係は?

例えば、クライアントとしてボードがMQTT接続リクエストを開始し、MQTTサーバーに接続するEMQTTサービスの場合、EMQTTサーバーがこのボードの接続リクエストを受け取ると、TCP層のボードとTCP接続を確立し、EMQTT内でこのボードと通信するプロセスが生成され、セッションと呼ばれるプロセスも生成されます。 このセッソワンは、このボードのサブスクリプション管理に特化したテーマであり、他のボードも関心のあるトピックをこのボードに公開した場合、そのセッションが購読されたトピックを受け取り、クライアントがまだ生存していると判明した場合、TCP経由でこのボードにデータを送信します。クライアントがすでに存在しない場合、つまりボードとサーバーが壊れている場合に。 その後、セッションはまずそのセッションで受信した購読トピックを保存し、次にボードが接続されたときにはクリーンセッション=falseとなり、その時点でセッションはクリアされず、今回接続すると以前に受信した購読メッセージがボードに送られます。おそらくそれが意味しているのでしょう。

質問6:emqttはどうやって接続されたクライアントが同一であると知るのですか?

接続時にクライアントIDを設定する必要があります。このIDは設定せずに置いておけます。設定しなければemqttサーバー側で一意IDが自動的に生成されます。セッションを使いたい場合は一意IDが必要で、IMEIを使えます。 オフラインメッセージを受け取る場合は、必ず特定のIDを使う必要があります。

質問7:emqttのセッション時間は変更できますか?

セッション時間は変更できます。今は48時間ですし、1週間に変更することもできます。もし永久にしたいなら、残念ながらemqttは適していません。

質問8:emqttのアクセス権限は設定ファイルに記載されていますか?

etc/acl.config

質問9:emqttの分布は?

分散型とは、複数のサーバーを接続することを意味します。どれか一つ以上でも、すべてが壊れていなければ、emqttは通常通り動作します。 EMQTTデータは複数のノードで共有されており、あるノードに問題が発生した場合、データは失われませんが、そのノード上のセッションデータは失われます。









先の:EMQX(EMQTTD)メッセージキューへの初認識
次に:jQueryの学習ノート
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com