問題タブ [emq]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
260 参照

erlang - erlang vm の max_fds のバンプ

emqttインスタンスをインストールしていますgclouderlangvmのファイル記述子の最大数を変更する必要があります。max_fdsホスト VM のすべての変更を既に行っていますが、VM の変更方法がわかりませんemqtt/etc/emqttd/emq.conf私が微調整できるという点で議論はありません。

このコマンドemqtt_ctl vm ioにより、以下の出力が得られます。

ここを変えたいio/max_fds

どんな助けでも大歓迎です。

0 投票する
2 に答える
5636 参照

mqtt - MQTT Broker でメッセージに TTL を与える方法はありますか

MQTT 仕様には、サーバーとクライアントの保持と状態を管理する接続フラグがあります。

クリーン セッションの仕様では、次のことが提案されています。

3.1.2.4 クリーン セッション位置: 接続フラグ バイトのビット 1。

このビットは、セッション状態の処理を指定します。クライアントとサーバーは、セッション状態を保存して、一連のネットワーク接続全体で信頼性の高いメッセージングを継続できるようにします。このビットは、セッション状態の存続期間を制御するために使用されます。

CleanSession が 0 に設定されている場合、サーバーは現在のセッションの状態に基づいてクライアントとの通信を再開する必要があります (クライアント識別子によって識別されます)。クライアント識別子に関連付けられたセッションがない場合、サーバーは新しいセッションを作成する必要があります。クライアントとサーバーは、クライアントとサーバーが切断された後、セッションを保存する必要があります [MQTT-3.1.2-4]。

CleanSession が 0 に設定されたセッションの切断後、サーバーは切断時にクライアントがセッション状態の一部として持っていたサブスクリプションに一致する QoS 1 および QoS 2 メッセージをさらに保存する必要があります。

そのため、切断後にクライアントが再接続するたびに、ブローカーは確認されていないすべての QoS-1 および QoS-2 メッセージをリレーします。したがって、ブローカーには状態があります。また、すべてのクライアントの状態を維持するために、サーバーは保持のためにいくつかのデータベースを使用します。これらのメッセージの状態 (サーバーが保存する) に Time to Live を与える方法はありますか? 古いメッセージを削除する (つまり、リレーしない) ようにブローカーに指示する方法。5日としましょう。

基本的に、QoS-1 でクリーン セッション = 0 を使用します。しかし、古いメッセージでブローカーの状態をクリアする方法は? 未確認の場合でも、5 日より古いメッセージを受信したくありません。