Java MQTTクライアントの設定

テキストコピッド

導入事例

Javaは、一般的に使用される強力なプラットフォームに依存しない言語です。 企業アプリケーション、Android開発、およびIoTプラットフォームお問い合わせ Eclipse Pahoプロジェクト 堅牢な Java MQTT クライアントは、TCP を超える MQTT ブローカーに接続したり、 WebSocket は TLS と認証をサポートしました。


このガイドでは、Eclipse Paho Java ライブラリを使用して、Java MQTT クライアントの構築を進めています。 それは、 また概要MQTTの特長接続フロー、トピックへの公開/購読、およびきれいに 切断。

前提条件

開始する前に、次の設定を必ず設定してください。

  • Java開発キット(JDK)- バージョン8以降
  • クライアントJAR
    • org.eclipse.paho.client.mqttv3-1.2.5.jar
      • https://repo1.maven.org/maven2/org/eclipse/paho/org.eclipse.paho
        .client.mqttv3/1.2.5/org.eclipse.paho.client.mqttv3-1.2.5.jar
    • org.eclipse.paho.mqttv5.client-1.2.5.jar
      • https://repo1.maven.org/maven2/org/eclipse/paho/org.eclipse.paho
        .mqttv5.client/1.2.5/org.eclipse.paho.mqttv5.client-1.2.5.jar

MQTTの特長 コネクト

このセクションでは、接続する複数の方法について説明しますMQTTについてJava を使用する。 ブローカーの詳細(ホスト名、ポート、ユーザー名/パスワード、CA証明書)が便利です。


基本TCP コネクション

インポートorg.eclipse.paho.client.mqttv3.*;
ストリングブローカー = "tcp://broker-url:1883";
文字列クライアント Id = "testclient";
MqttClient クライアント = 新しい MqttClient(ブローカー、クライアント) Id、新しい MemoryPersistence());
クライアント.connect();

認証と接続

MqttConnectOptions オプション = 新しいMqttConnectOptions();
options.setUserName("username"); は、
option.setPassword("password".toCharArray()); );
client.connect(オプション)

TLS/SSL に接続

文字列ブローカー = "sssl://broker-url:8883"; // Note: `ssl://` を使う スキーム
MqttConnectOptions オプション = 新しいMqttConnectOptions();
options.setSocketFactory(SSLSocketFactoryGenerator.getSocketFactory(「ca.crt」)); // カスタムヘルパーメソッド
client.connect(オプション)

WebSocketを介して接続

文字列ブローカー = "ws://broker-url:8080/mqtt"; // または安全なWebSocket用のws://"
MqttClient クライアント = 新しい MqttClient(ブローカー、クライアント) Id、新しい MemoryPersistence());
クライアント.connect();

MQTT出版

文字列トピック = "test/topic";
文字列の内容 = "{\" 温度\": 50.5, \"humidity\": 34}";
int qos = 1;
MqttMessage = 新しいMqttMessage(content.getBytes());
メッセージ.setQos(qos)。
client.publish(トピック、メッセージ)

MQTTの特長 会員登録

client.subscribe(「テスト/トピック」);
Client.setCallback(新しいMqttCallback()) お問い合わせ
パブリック void 接続 接続 (ja) お問い合わせ
// 切断処理
お問い合わせ
パブリック 不正なメール に文字列、 MqttMessage メッセージ お問い合わせ
System.out.println(「メッセージの受信:\n\t」+ トピック+ "-> "+新しい文字列(message.getPayload());));););
お問い合わせ
在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 在 お問い合わせ
// に に
お問い合わせ
お問い合わせ


退会のため:

client.unsubscribe(「test/+」);

MQTTの切断

クリーンな切断により、ブローカーはセッションに縛られたリソースを解放し、リンダリングソケット接続を避けます。

クライアント.disconnect();
クライアント.close();

サンプル MQTTv311 の顧客

Eメール: [email protected].*
インポートorg.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
javax.net.sl.SSLSocketFactory をインポートします。
java.nio.charset.StandardCharsetsをインポートする
MqttClient4 について
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
 プライベート _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ :18 :18 :18 :18 :18 :18 :18 :18 :18 :18 :18  //  //  //  //  // に に に に に に に に に に に に に
オ オ オ 交通 = true;
ケーススタディ
 プライベート PASS  "  "
静 オ オ オ
スタコンフィニチャースト CLIENT_ID = "testclient4";
スタコンフィニチャーストTOPIC = "test/topic";
パブリック static void main(String[] args) {
お問い合わせ
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
MqttClient クライアント = 新しい MqttClient(BROKER_HOST、CLIENT_ID、新しい MemoryPersistence()));
// // // // // // 連携オプションの設定 お問い合わせ
MqttConnectOptions は、新しいMqttConnectOptions() です。
.setCleanSession(true) のオプション
郵便番号
オプション。setUserName(ユーザー名);
.setPassword(パスワード)
お問い合わせ
お問い合わせ
SSLソケット工場のsslSocketFactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
。setSocketFactory(sslSocketFactory)。
お問い合わせ
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
Client.setCallback(新しいMqttCallback()) お問い合わせ
オーバーライド
パブリック 不正なメール に文字列、 MqttMessage メッセージ お問い合わせ
System.out.println(「トピックに関するコメント」+ トピック+ : +新しい文字列(message.getPayload()));););
お問い合わせ
お問い合わせ
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
client.connect(オプション)
お問い合わせ
Client.subscribe(TOPIC 1、);
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
.スリープ(2000)
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
文字列のペイロード = "{\" 温度\": 50.5, \" 湿気\": 34}";
Mqttメッセージ =新しいMqttMessage(ペイロード.getBytes(StandardCharsets.UTF_8));
電話番号.setQos(1);
メール.setRetained(false)
クライアント。 公開(TOPIC、メッセージ)
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
.スリープ(3000)
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
クライアント.disconnect()
クライアント.close();
お問い合わせ
e.printStackTrace() ;
お問い合わせ
お問い合わせ
お問い合わせ


このサンプルコードを以下のように保存します。

MqttClient4例.java

コンパイル:

javac -cp .:org.eclipse.paho.client.mqttv3-1.2.5jar MqttClient4例.java

実行:

java -cpの .:org.eclipse.paho.client.mqttv3-1.2.5jar MqttClient4例

サンプル MQTTv5 の顧客

インポートorg.eclipse.paho.mqttv5.client.MqttAsyncClient;
インポートorg.eclipse.paho.mqttv5.client.MqttConnectionOptions;
インポートorg.eclipse.paho.mqttv5.client.IMqttToken;
.clipse.paho.mqttv5.client.MqttCallback をインポートします。
インポートorg.eclipse.paho.mqttv5.client.persist.MemoryPersistence;
.clipse.paho.mqttv5.common.MqttMessage;
インポートorg.eclipse.paho.mqttv5.common.MqttException;
java.nio.charset.StandardCharsetsをインポートする
パブリック MqttClient5例 {
オ オ オ 交通 = true;
ケーススタディ
 プライベート PASS  "  "
パブリック static void main(String[] args) {
ストリング = "tcp://mqtt-broker-URL:1883";
文字列 クライアント Id = "testclient5";
文字列のトピック = "test/topic";
お問い合わせ
// // // // // クライアントとオプション
MqttAsync クライアント = MqttAsyncClient(クライアント) Id、新しい MemoryPersistence());
MqttConnection(ミクットコネクション) オプション = 新規MqttConnectionOptions();
.setCleanStart オプション
ユーザ名
お問い合わせ
オプション。setUserName(ユーザー名);
.setPassword(PassWORD.getBytes(StandardCharsets.UTF_8)) のオプション
お問い合わせ
// // // // // // 接続、メッセージの呼び出し
Client.setCallback(新しいMqttCallback()) お問い合わせ
オーバーライド
公開無効化 (org.eclipse.paho.mqttv5.client.MqttDisconnectResponse 切断応答) {
System.out.println("Disconnected:" + disconnectResponse.getReasonString()); )
お問い合わせ
オーバーライド
パブリック void mqtt エラー (MqttException) お問い合わせ
System.out.println("MQTT Error:" +except.getMessage()); );
お問い合わせ
オーバーライド
パブリック 不正なメール に文字列、 MqttMessage メッセージ お問い合わせ
System.out.println(「メッセージはトピック」+「:」+「新規文字列(message.getPayload())))」)
お問い合わせ
オーバーライド
ゆうちょう (IMqttToken) お問い合わせ
System.out.println("+ token.getMessageId()" は、Eメールのメッセージの配信を終了しました。
お問い合わせ
オーバーライド
パブリック void connectComplete(boolean reconnect, String serverURI) {
System.out.println(" + serverURI + (reconnect? "(reconnect)" : "") は なります。
お問い合わせ
オーバーライド
パブリック void authPacketArrived(int resultCode, org.eclipse.paho.mqttv5.common.packet.MqttProperties プロパティ) {
// // // // // // // // // // // // // // // // // // // // // // //
お問い合わせ
お問い合わせ
// // // // // // クライアント
IMqttToken connectToken = client.connect(オプション)
connectToken.waitForCompletion() は、
System.out.println(コネクテッド)
.スリープ(3000)
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
IMqttToken サブトークン = client.subscribe(、1);
subToken.waitForCompletion() ;
System.out.println(「+トピック」)
// // // // // // // // // // // // // // // // // // // //
文字列のペイロード = "{\" 温度\": 50.5, \" 湿気\": 34}";
MqttMessage =新しいMqttMessage(ペイロード.getBytes());
電話番号.setQos(1);
IMqttToken = client.publish(トピック、メッセージ)
パブToken.waitForCompletion() );
System.out.println(「公開メッセージ:「+ペイロード」)
// // // // // // // // // // // // // // // // // // // // //
.スリープ(3000)
お問い合わせ
クライアント.disconnect()
クライアント.close();
System.out.println(「Disconnectedとクローズドクライアント」)
お問い合わせ _ MqttException
e.printStackTrace() ;
お問い合わせ
お問い合わせ
お問い合わせ

このサンプルコードを以下のように保存します。

MqttClient5例.java

コンパイル:

javac -cp .:org.eclipse.paho.mqttv5.client-1.2.5.jar MqttClient5例.java

実行:

java -cpの .:org.eclipse.paho.mqttv5.client-1.2.5.jar MqttClient5例.java

トラブルシューティング

  • もし、MQTTについてURL が間違っているか、到達できないか、プログラムが接続例外をスローする可能性があります。
  • TLS を使用する場合は、URL を ssl://... に切り替えて、8883 に移植してください。
  • 出力が見つからない場合は、ログを追加したり、メッセージを受信しない限り期待されます。 現在のバージョンは最小限です。

Messagingを価値に変えて下さい!

実行する Java クライアント スマート

接続しないでください。リアルタイムのインサイト、信頼性の高いパフォーマンス、および成長準備を有効にします。
MQTTブローカーによるIoTソリューション