2017-06-12 3 views
2

5つのプロセスを使用して1秒あたり1000メッセージを公開しようとしています。そして、5つのプロセスを使って聞くことを試みると、それぞれがメッセージが公開されているトピックを聞きます。公開されたすべてのメッセージを受け取ることができません[AWS IOT]

問題は、すべての千のメッセージを受け取ることができず、受け取ったメッセージの数がこのプロセスに従うたびに一定ではないことです。

私がAWSを理解する限り、IOTは毎秒3000の着信メッセージを許可する必要があります。

+0

私は十分なメッセージが表示されない理由がたくさんあると思います。多分、あなたのネットワーク接続がパフォーマンスを制限しているかもしれません。おそらく、ブローカー側の制限要因があります。あなたはいくつかのことをコントロールしています。あなたはパフォーマンスが変わるかどうかを見極めるために何を変えてみましたか? – barny

+0

私はprint文を入れて、必要な数のメッセージを送信していて、ec2インスタンスでプログラムを実行しているので、ネットワーク接続が理由ではないと思っています。私がAWSのドキュメントから理解している限り、インバウンドメッセージの数は3000になる可能性があるので、私は限界に近づくことはできません。そして、私はQoSレベルを1に設定しました。私は複数のトピック/単一のトピックでそれを送信しようとしました、トピックに公開されているメッセージの数を減らしました。 – user3382968

+0

私は、送信プロセスが送信しているメッセージの数と受信プロセスが受信しているメッセージの数(プログラムのtime.perf_counterを使用して)を各プロセスに計測したと仮定します。送信者と受信者の両方をローカルで(エンドポイントとして2つの異なるポートでlocalhostを使用して)実行できる方法はありますか? – Schollii

答えて

0

QOS-1またはQOS-2レベルでデータを公開してください。

サービス品質とは何ですか?

QoS(Quality of Service)レベルは、メッセージの送信者と受信者の間で、メッセージを配信する保証に関する合意です。 MQTT中3つのQoSレベルがあります。

、最高1回(0)

に少なくとも1回(1)

正確に一度(2)。

QoSについて言及するときは、常にクライアントからブローカーへの公開とブローカーからサブスクライブするクライアントの2つの異なる部分があります。微妙な違いがあるので、別々に見る必要があります。クライアントをブローカに公開するためのQoSレベルは、クライアントが特定のメッセージに対して設定するQoSレベルに依存します。ブローカがサブスクライブするクライアントにメッセージを転送するとき、ブローカは、以前にクライアントが行ったサブスクリプションのQoSを使用します。つまり、低いQoSで加入すれば、特定の受信クライアントに対してQoS保証が低下する可能性があります。

なぜサービス品質が重要ですか?

QoSはMQTTの主な機能です。プロトコルが再送信を処理し、メッセージの配信を保証するため、信頼性の低いネットワークでの通信が非常に簡単になります。また、ネットワークの信頼性とアプリケーションロジックに応じてクライアントにQoSレベルを選択させることができます。

関連する問題