MQTT クライアントが接続に失敗する場合の問題の解決
MQTT クライアントが遠隔測定チャネルに接続できない場合は、いくつもの原因が考えられます。
手順
MQTT クライアントが接続に失敗する問題を診断するには、以下の原因を考慮に入れてください。
- キュー・マネージャーおよび遠隔測定 (MQXR) サービスが実行中であることを確認してください。
キュー・マネージャーを始動します。 デフォルトでは、キュー・マネージャーと一緒に MQXR サービスが開始するはずです。 MQXR サービス制御を手動で開始するように構成した場合には、「サービス」フォルダーから、このサービスを開始する必要があります。 MQXR サービスの開始について詳しくは、 MQXR サービスの開始と停止を参照してください。
- 遠隔測定チャネルと遠隔測定 (MQXR) サービスが正しく定義されて実行されていることを確認してください。
手動で MQXR サービスを定義してキュー・マネージャーのデフォルト伝送キューを
SYSTEM.MQTT.TRANSMIT.QUEUE
に設定できます。このキューは、既存のデフォルト伝送キューより優先されます。 これにより、キュー・マネージャーが Telemetry に適したものになります。 あるいは、Telemetry ウェルカム・ページから「サンプル構成の定義」ウィザードを実行することを検討してもよいでしょう (まだ実行していない場合)。 - 独自のクライアントを作成しましたか?
そうであれば、MQTT v5 プロトコルではなく v3 プロトコルを使用するクライアント・アプリケーションを作成しましたか? MQTT クライアント・ユーティリティーを実行することによって問題を切り分けてみてください。
- クライアント ID 名は有効ですか?
IBM® MQに接続する場合、MQTT クライアント ID は 23 文字未満でなければならず、英字、数字、ピリオド (.)、スラッシュ (/)、下線 (_)、およびパーセント記号 (%) のみを使用できます。
- MQTT クライアントを接続し、 MQTT
keep alive 間隔を使い果たしましたか?
キープアライブ属性は、非アクティブのために MQTT クライアントが切断されるまでの間隔です (ミリ秒単位)。 MQXR サービスは、キープアライブ間隔内にクライアントからの通信を何も受信しなければ、クライアントから切断します。
- 多数の MQTT クライアントが同時に遠隔測定チャネルに接続しようとしていますか?
テレメトリー・チャネルごとに backlog 属性があります。 これは、遠隔測定チャネルがサポートする同時接続要求数です。 接続しようとする MQTT クライアントの数よりも小さい数に値が設定されていないことを確認してください。
- TCP/IP 接続が現在もアクティブであることを確認してください。