問題タブ [paho]

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 投票する
0 に答える
812 参照

python - Paho Python クライアントでソケット読み取りエラーが発生し、その後ブローカーから切断される

クライアントの詳細: http://git.eclipse.org/gitroot/paho/org.eclipse.paho.mqtt.python.gitから取得した Paho MQTT Python クライアント、SHA ID 300fcbdffd62d08f627f94f3074463cfa532ca87

ブローカーの詳細: MQTT プラグインを使用した RabbitMQ 3.3.4

最初のシナリオでは、すべてが SSL を有効にしてローカルで実行されています。私は、メッセージ (> 10000 メッセージ) をパブリッシュし、パブリッシュ間の確認を待たない別のプロセスを持つ方法でクライアントを使用しています。このエラーは、self._ssl.read(1) が client.py の _packet_read からの次のコード スニペットから長さゼロの値を返した結果です。

RabbitMQ から 25 個の確認応答を受信して​​解析した後に発生します。このエラーの後、ブローカーから何も返されなくなりました。

SSL を無効にして実行すると、エラーは発生せず、送信されたすべてのメッセージの受信確認を正常に受信できます。

ブローカーをリモート (インターネット上のどこか) で実行すると、SSL 経由で同じ結果が得られます。ただし、SSL を使用していない場合、さまざまな間隔で読み取りエラー/切断が発生しますが、クライアントは回復/再接続でき、送信されたすべてのメッセージに対してブローカーの確認応答を受け取ります。

私が使用しているクライアント構成は次のとおりです。

これを引き起こしている可能性のあるものについてのアイデアやトラブルシューティングの提案はありますか?

更新 20140828: loop_read をステップ実行していて、最初の完全なパケット (接続確認) を正常に受信した後、空のソケットの戻り値を取得していることに気付きました。socket.recv 呼び出しに先行する select の呼び出しは、ソケットで読み取る準備ができているデータがあることを示します。これはソケットバッファの問題でしょうか? オーバーフローした場合の Python ソケット受信バッファ (これを OSX で実行しています) の動作がどうなるかわかりません。

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

javascript - paho mqttws31.js でバイナリを受け取る

私は paho: http://www.eclipse.org/paho/clients/js/ lib を使用して mqtt-broker に接続しています。しかし、websockets 経由でバイナリ データを受信すると、データの形式が正しくないと表示されます: Error: AMQJS0009E Malformed UTF data:d4 -3f 。. paho mqttws31.js でバイナリを受信できないのでしょうか

編集: 残念ながら、受信したメッセージを取得するために (message.payloadString) を使用しました。しかし、私が理解できる限り ( https://github.com/i5ting/paho.mqtt.javascript/blob/master/src/mqttws31.js#L2060 )、message.payloadBytes も使用できます。

つまり、実際には、それぞれが 8 バイトの Double を送信しています。message.payloadBytes 内でそれらにアクセスするにはどうすればよいですか?

どうも。

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

spring-integration - Spring Integration MQTT サブスクライバー (paho) がメッセージの処理を停止する

Spring 統合 (Paho MQTT クライアント 0.4.0 を使用して Tomcat 7 で実行されている 4.0.3.RELEASE) の MQTT サブスクライバーの 1 つで問題が発生しています。

この問題は、頻繁に使用されるトピック (大量のメッセージ) のサブスクライバーにあります。トピックにメッセージを送信するデバイスは、GPRS を介して接続する現場のデバイスです。

Spring 統合とブローカー (Mosquitto) は同じサーバー上で実行されています。

この問題は、サーバーを再起動せずに Tomcat で数回再デプロイした後に発生するようです。問題が発生した場合、Tomcat インスタンスを再起動すると、しばらくの間問題が解決されます。

これが一連のイベントです(mosquittoログから。vdm-dev-liveサブスクライバーは問題のあるものです):

春の統合を開始すると、すべてのサブスクライバーがさまざまなトピックに接続していることがわかります。

メッセージが行き来するのを見る

さまざまなサブスクライバーからの ping 要求が表示されます

しかし、突然、次のことがわかります。

そしてその時点で、サブスクライバーは死んでいます。ping リクエストは見られず、そのトピックからのメッセージは処理されていません。ブローカー レベルでは、(NodeJS を使用して) debug-log サブスクライバーがあり、これらのサブスクライバーがまだそのトピックからのメッセージを正常に処理していることがわかります (したがって、問題はサブスクライバー レベルにあります)。

Tomcat のログには、次のようにも表示されます。

しかし、Paho はこのサブスクライバーのクリーンアップや再始動を行いません。

Tomcat ログにもこれが表示されます。

また、シャットダウン中にスタックしているサブスクライバーのスレッドが多数あることにも気付きました。

これを引き起こしている原因と、これを防ぐ方法はありますか?

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

python - Mosquitto/Paho for Python を使用して 20 を超える MQTT メッセージを受信できない

Mosquitto (現在は Paho)​​ python MQTT クライアントを使用して、HiveMQ ブローカーに接続しています。コードは非常に基本的なもので、こちらのドキュメントから引用されています - https://pypi.python.org/pypi/paho-mqtt

client.subscribe() でわかるように、QoS は 2 です。これは、公式ドキュメントのコードに対する唯一の変更です。

パブリッシング クライアントのコードは次のとおりです。

ここでも、QoS は 2 です。

この QoS の変更により、加入者が受信するメッセージは 20 だけになります。さらに調べてみると、この問題はおそらく が原因であることがわかりましmax_inflight_messages_set()た。これは、ネットワーク フローの途中で一度に送信できる QoS > 0 のメッセージの最大数を設定するオプション機能です。デフォルトは 20 です。

ただし、他の値に変更しても機能しません。また、クライアントは、これらのメッセージが受信されたときにまだ処理中であると考えるのはなぜですか? 問題を解決するにはどうすればよいですか? これらのメッセージが「処理中」ではなく、配信済みであることをクライアントが確実に理解するにはどうすればよいですか?

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

python-2.7 - ラズベリー pi で Python 用の mqtt paho を使用する

次のように、raspbian で python 2.7 を使用してメッセージ ブローカーに接続しようとしています。

スクリプトを実行すると、次のエラーが発生します。

トレースバック (最新の呼び出しが最後): ファイル "ejemplo.py"、27 行目、client=paho.Client() ファイル "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py "、410 行目、init self._sockpairR、self._sockpairW = _socketpair_compat() ファイル"/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py"、255 行目、_socketpair_compat listensock .bind(("localhost", 0)) File "/usr/lib/python2.7/socket.py", line 224, in meth return getattr(self._sock,name)(*args) socket.error: [ Errno 99] 要求されたアドレスを割り当てることができません

どうすれば修正できますか?

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

mqtt - HiveMQ 2.1.0 + Eclipse Paho javascript mqttws31.js での Websocket 接続エラー

Google Chrome で HTML ファイルの一部として mqttws31.js を実行すると、以下のエラーが発生します。

HiveMQ は MQTT ブローカーとして使用されました。ログは次のとおりです。

MQTT クライアントを含む HTML ファイルを読み込むと、次のエラーが発生します。

これを解決するための助けをいただければ幸いです。

0 投票する
0 に答える
209 参照

rabbitmq - RabbitMQ/MQTT - 誤ったメモリ上限アラート

多数のクライアント (Eclipse paho に基づく) を MQTT ブローカーに接続しようとしています。

ブローカに接続するサブスクライバの速度を低下させる不適切なハイ メモリ ウォーターマーク セットが頻繁に表示されます。

これは約 10k 接続で発生し始め、それ以上の接続が遅くなります。この時点で、すべての rabbitmq プロセスによって報告される %mem は、8 GB の RAM の < 30% です。

hipe compile を有効にしましたが、有効にしなくても状況は同じです。

すべてのサブスクライバーconnect()は、スレッド プールでメソッドを実行します。

私は違いました。スレッド数が 20、100、200、20 以下の場合、%cpu は正常です ~ 60-80、100 以上では ~ 200-300 になることがあります。いいえ。接続の数は増加しません (変動 ~ 10K)。

この時点で、サブスクライバーが次のエラーをスローしていることもわかります。これは、過負荷のためにブローカーが停止していることを意味しますか?

クライアント/サーバー構成の作成中に必要なものはありますか?

ありがとう ...

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

mqtt - MQTT 固定ヘッダー構造については?

MQTTライブラリを実装しようとしています。チュートリアルによると、メッセージの固定ヘッダーはMQTT、投稿された写真のようになります。

また、同じチュートリアルで、固定ヘッダーのエンコード方法が次のように記述されていることがわかりました。

私の質問は、投稿された固定ヘッダー仕様によると、フィールドretainqosdupおよび には、それぞれ、、および ビットmsg typeが必要です。1214

msg typeフィールドが最大 5 ビット "<<4" に拡張され、フィールドdupが最大4 bits"<<3"に拡張されるのはなぜですか?

Fixed_Header ここに画像の説明を入力