5つのプロセスを使用して1秒あたり1000メッセージを公開しようとしています。そして、5つのプロセスを使って聞くことを試みると、それぞれがメッセージが公開されているトピックを聞きます。公開されたすべてのメッセージを受け取ることができません[AWS IOT]
問題は、すべての千のメッセージを受け取ることができず、受け取ったメッセージの数がこのプロセスに従うたびに一定ではないことです。
私がAWSを理解する限り、IOTは毎秒3000の着信メッセージを許可する必要があります。
5つのプロセスを使用して1秒あたり1000メッセージを公開しようとしています。そして、5つのプロセスを使って聞くことを試みると、それぞれがメッセージが公開されているトピックを聞きます。公開されたすべてのメッセージを受け取ることができません[AWS IOT]
問題は、すべての千のメッセージを受け取ることができず、受け取ったメッセージの数がこのプロセスに従うたびに一定ではないことです。
私がAWSを理解する限り、IOTは毎秒3000の着信メッセージを許可する必要があります。
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レベルを選択させることができます。
私は十分なメッセージが表示されない理由がたくさんあると思います。多分、あなたのネットワーク接続がパフォーマンスを制限しているかもしれません。おそらく、ブローカー側の制限要因があります。あなたはいくつかのことをコントロールしています。あなたはパフォーマンスが変わるかどうかを見極めるために何を変えてみましたか? – barny
私はprint文を入れて、必要な数のメッセージを送信していて、ec2インスタンスでプログラムを実行しているので、ネットワーク接続が理由ではないと思っています。私がAWSのドキュメントから理解している限り、インバウンドメッセージの数は3000になる可能性があるので、私は限界に近づくことはできません。そして、私はQoSレベルを1に設定しました。私は複数のトピック/単一のトピックでそれを送信しようとしました、トピックに公開されているメッセージの数を減らしました。 – user3382968
私は、送信プロセスが送信しているメッセージの数と受信プロセスが受信しているメッセージの数(プログラムのtime.perf_counterを使用して)を各プロセスに計測したと仮定します。送信者と受信者の両方をローカルで(エンドポイントとして2つの異なるポートでlocalhostを使用して)実行できる方法はありますか? – Schollii