Java 用の MQTT クライアントの概要
IBM® MessageSight または IBM WebSphere® MQ のいずれかを MQTT サーバーとしてを使用して、 MQTT Client for Java サンプル・アプリケーションを稼働させます。 サンプル・アプリケーションは、 IBMの MQTT Software Development Toolkit (SDK) のクライアント・ライブラリーを使用します。 SampleAsyncCallBack サンプル・アプリケーションは、 Android およびその他のイベント・ドリブン・オペレーティング・システム用の MQTT アプリケーションを作成するためのモデルです。
始める前に
- MQTT client for Java アプリケーションは、 JSE 1.5 以上の
Java 互換性のある
プラットフォームであれば、どのプラットフォームでも実行できます。 IBM Mobile Messaging および M2M Client Packのシステム要件を参照してください。 - クライアントとサーバーの間にファイアウォールがある場合は、 MQTT トラフィックをブロックしていないことを確認してください。
本タスクについて
このタスクの目的は、 MQTT Client for Java サンプル・アプリケーションを作成して実行し、それを MQTT version 3 サーバーとして IBM WebSphere MQ または IBM MessageSight に接続して、メッセージを交換できることを確認することです。
このタスクに従って、 Eclipse ワークベンチまたはコマンド行からサンプル・アプリケーションを実行します。 この例のステップは、 Windows用です。 わずかな変更で、 JSE 1.5 以上をサポートする任意のプラットフォームでサンプル・アプリケーションを実行できます。
IBM WebSphere MQ に接続するアプリケーションを実行するための環境が構成されている IBM WebSphere MQと同じサーバー上でアプリケーションを実行できます。 コマンド行からの MQTT サービスの構成 のタスクに従って、 Windows または Linux®に IBM WebSphere MQ Telemetry オプションを指定して IBM WebSphere MQ をインストールおよび構成します。 環境をインストールして構成したら、サンプル・アプリケーション MQTTV3Sample
を実行して、インストール済み環境を検査します。
手順
結果
MQTT サーバーとして IBM WebSphere MQ または IBM MessageSight に接続されている MQTT Java サンプル・アプリケーションをコンパイルして実行しました。
次のタスク
Javadoc 参照情報を確認します。 「 Eclipseからすべての MQTT クライアント・サンプル Java アプリケーションをコンパイルして実行する」のステップ 3 を参照してください。 あるいは、 Mobile Messaging および M2M Client Packの SDK\clients\java\doc\javadoc ディレクトリーにある Javadoc html ファイルを開きます。
コマンド行からの Paho サンプル・プログラムのコンパイルと実行
コマンド行から Paho サンプル・アプリケーション Sample.java をコンパイルして実行します。 このサンプルは、 MQTT SDK にあります。 このサンプルは、 org.eclipse.paho.client.mqttv3 パッケージ内の MQTT Paho クライアント・ライブラリーを使用して作成されています。 これは、 MQTT のパブリッシャーとサブスクライバーを示しています。 同じディレクトリーにある他の 2 つの Paho サンプルを同じ方法で作成して実行することができます。 これらは、 MQTT ライブラリーを非同期に呼び出すことによって異なります。
始める前に
本タスクについて
SDK クライアントのサンプル・サブディレクトリー SDK\clients\java\samplesから Sample.java をコンパイルして実行します。 Java コードは、ディレクトリー SDK\clients\java\samples\org\eclipse\paho\sample\mqttv3appにあります。
手順
次のタスク
SDK\clients\java\samples\org\eclipse\paho\sample\mqttv3app サブディレクトリー内の他のサンプルをコンパイルして実行するためのスクリプトを作成します。 図 1 のスクリプトをコピーし、 Sample を SampleAsyncWait または SampleAsyncCallBackに置き換えます。 その他のサンプルは、同期 Sample プログラムの非同期バージョンです。
- SampleAsyncWait
- SampleAsyncWait は org.eclipse.paho.client.mqttv3 パッケージに含まれています。 非同期 MQTT API を使用し、アクションが完了するまで別のスレッドで待機します。 メイン・スレッドは、 MQTT アクションの完了を待機しているスレッドで同期されるまで、他の作業を行うことができます。
- SampleAsyncCallBack
- SampleAsyncCallBack は org.eclipse.paho.client.mqttv3 パッケージに含まれています。 これは、非同期 MQTT API を呼び出します。 非同期 API は、 MQTT が呼び出しの処理を完了するのを待機せず、アプリケーションに戻ります。 アプリケーションは他のタスクを実行してから、処理の必要な次のイベントの到着を待機します。 MQTT は、処理を完了すると、イベント通知をアプリケーションに送り返します。 イベント・ドリブン MQTT インターフェースは、 Android およびその他のイベント・ドリブン・オペレーティング・システムのサービスおよびアクティビティーのプログラミング・モデルに適しています。
非同期サンプルは、 MQTT アプリケーションが MQTT クライアントを待機している間にブロックする時間を削減する方法を示しています。 応答性とモバイル環境でのバッテリー寿命とを向上させるためには、メインスレッドでのブロック呼び出しをなくすことが重要です。
- SampleAsyncWait は、 MQTT がネットワーク対話を待機している間はブロックしません。
- SampleAsyncCallBack は、 MQTT クライアントがアクションを完了するのを待機することをブロックしません。 後者は、 JavaScript ページがブラウザーから MQTT クライアントを呼び出す場合に必要です。 JavaScript ページはブロックしてはなりません。 アクションへの応答は、通知を処理するために作成した MQTT イベント・ハンドラーを呼び出すメイン・ブラウザー・スレッドに返送する必要があります。
Eclipse からすべての MQTT クライアント・サンプル Java アプリケーションをコンパイルして実行します。
Mobile Messaging および M2M Client Packに含まれている MQTT クライアント・サンプル Java ・アプリケーションをコンパイルして実行します。 これらは、 MQTT のパブリッシャーとサブスクライバーを示しています。