Benpianそれが発展することを選んだの記録とテストMQTTサーバ、クライアント、Javaクライアント

MQTTサーバーの選択およびインストールプロセス、
MQTTクライアント・テスト・ツールのインストールとテスト、
MQTT Javaクライアントの選択、開発、テスト、


MQTTサーバーの選択とインストール

現在主流のオープンソースサーバMQTT主に3つ以下:
1)  EMQX:GitHubの4882スター
2)  mosquitto:1645スターのGitHub
3)  アポロ:ActiveMQののアップグレード版、githubの109件

私たちは、最初に行き、サーバとしてこのMQTT EMQXを選んだEMQ公式サイト V4.0.4になりました最新バージョンまで、EMQXバージョンをインストールしてダウンロードします

与えられた審査官のネットワークインストール手順を参照してくださいヘルプドキュメントを

公式サイトの動作によれば、サービスを開始することはできません、カードはここでやり直すemqx
  このステップは非常にピットである、システムをインストールしてください良いErlangの開発環境、必要Erlangのジャンプアドレスを EMQXが説明したり開発するアーランであるためか、

インストールを開始した後に完了し、それがマシンにインストールされている場合、あなたはブラウザで開くことができhttp://127.0.0.1:18083、デフォルトのユーザ名を入力し、「管理者」とデフォルトのパスワード「パブリック」、首尾よく管理コンソールのヘルプEMQXを入力することができますサーバーのインストールは完了です。
スクリーンショットマイクロチャネル_20200316231950.png

MQTTクライアントのインストールとテスト

クライアントのテストツールはMQTTBox推奨します

; Windows用の別のインストールプログラムクロームプラグインの1:MQTTBoxは、2つの方法があります。

1)クロームChromeはプラグインに必要な壁)上(mqttboxを検索するために、市場に直接プラグイン
2)ここでは、Windowsのインストールパッケージ:ダウンロード

MQTTサーバー接続:

ホストポート1883;図配置された接続サーバ、プロトコル選択MQTT / TCPに次参照
他の一時的試験パラメータに影響を及ぼし、それ自身の研究の関心。

スクリーンショットマイクロチャネル_20200316232820.png

サーバーに正常に接続し、接続されたアイコンが緑色で表示されます
スクリーンショットマイクロチャネル_20200316233123.png

加入者を追加します。

受注のトピックは、「ハロー」であり、QoSはデフォルトで0

スクリーンショットマイクロチャネル_20200316233356.png

出版社を追加

ポスト「ハロー」メッセージ期間{「こんにちは」:「世界」}のトピック、QoSのデフォルト0

ニュースリリースは、加入者はすぐにこのメッセージウィンドウが表示されます。この時点で、クライアントのテストは完了です。
スクリーンショットマイクロチャネル_20200316233529.png

MQTT Javaクライアントの開発とテスト

JAVAクライアント選択
EMQX SDK_TOOLS記載されているほぼすべての言語で開発中のオープンソースのクライアントツール。現在、メインのEclipse PAHO下JAVA SDK、Xenqtt、MeQanTT、MQTT -client。

春の統合エンドポイントがあるので接続するために正式にDEMOをEclipseのPAHO内部で使用されているサポートされ、私たちはJAVAクライアントを選択しました。この時は、Eclipse PAHOです。

POMは、導入しました

  <依存> 
            <groupIdを> org.eclipse.paho </ groupIdを> 
            <たartifactId> org.eclipse.paho.client.mqttv3 </たartifactId> 
            <バージョン> 1.2.0 </バージョン> 
        </依存関係>

 

解放側の開発の例

1つの インポートorg.eclipse.paho.client.mqttv3.MqttClient。
2  インポートorg.eclipse.paho.client.mqttv3.MqttConnectOptions。
3  インポートorg.eclipse.paho.client.mqttv3.MqttException。
4  インポートorg.eclipse.paho.client.mqttv3.MqttMessage。
5  インポートorg.eclipse.paho.client.mqttv3.persist.MemoryPersistence。
6  
7  / ** 
8  *发布端未例
 9   * / 
10  パブリック クラスPublishSample {
 11      公共 静的 ボイドメイン(文字列[]引数){
 12  
13         トピック=文字列"MQTT / OKOK" ;
 14          文字列の内容= "こんにちはHA 1。" ;
 15          int型のQoS = 1。;
 16          文字ブローカー= "TCP://127.0.0.1:1883" ;
 17。          文字列のuserName = "テスト" ;
 18のIS          パスワード=文字列"テスト" ;
 19          文字のclientId = "pubClient1" ;
 20は、         // メモリストレージ
21は          MemoryPersistence永続= 新しい新しいMemoryPersistence();
 22である 
23れる         トライ{
 24              //はクライアントを作成
25             SampleClientの= MqttClient 新しい新MqttClient(ブローカー、clientIdを、持続性);
 26              // パラメータリンク作成
27              MqttConnectOptions connOpts = 新しい新しいMqttConnectOptionsを();
 28              // リブートと再接続時の状態を覚えている
29              connOpts.setCleanSession();
 30              // ユーザ接続の名前を設定
31である             ; connOpts.setUserName(ユーザ名)
 32              connOpts.setPassword(password.toCharArray());
 33である             // 接続を確立し
34である             sampleClient.connect(connOpts);
 35              // メッセージの作成
36             メッセージ= MqttMessage 新しい新しいMqttMessage(content.getBytes());
 37              // サービスメッセージのセット質
38は             message.setQos(QOS);
 39              // 解放メッセージ
40              sampleClient.publish(トピック、メッセージ);
 41である             // 切断
42である             ; sampleClient.disconnect()
 43である             // 閉じるクライアント
44である             sampleClient.close();
 45          } キャッチ(MqttException Me)の{
 46である              のSystem.out.printlnは( "理由" + me.getReasonCode());
 47              のSystem.out .println( "MSG" +me.getMessage())。
48              のSystem.out.println( "LOC" + me.getLocalizedMessage())。
49              のSystem.out.println( "原因" + me.getCause());
50              のSystem.out.println(+ "EXCEP" 私)。
51              me.printStackTrace()。
52          }
 53      }
 54 }

 

パブリケーションインスタンスを終了する購読

1  輸入 org.eclipse.paho.client.mqttv3 *。;
2  インポートorg.eclipse.paho.client.mqttv3.persist.MemoryPersistence。
3  
4  / ** 
5  *订阅端
 6   * / 
7  パブリック クラスSubscribeSample {
 8      パブリック 静的 ボイドメイン(文字列[]引数)がスローMqttException {
 9          列ホスト= "://127.0.0.1:TCP 1883"を10          列TOPIC = "MQTT / okok" 11の         int型のQoS = 1 12          文字列のClientID = "subClient1"13である          文字列のuserName =「テスト」;
 14          列=パスワード、「テスト」;
 15          試み{
 16              // ホスト名がホストである、テストのためのクライアントIDは、MQTT、すなわち、一般的にクライアントに一意の識別子を表し、MemoryPersistenceを提供接続のClientIDクライアントIDの格納形式は、デフォルトでは、メモリを節約することである
17。              MqttClientクライアント= 新しい新しい MqttClient(HOST、クライアントID、新しい新しいMemoryPersistence());
 18れる             // 接続MQTTを設け
19の。              MqttConnectOptionsオプション= 新しい新しいMqttConnectOptionsを();
 20              // 設定が空のセッションでありますここではfalseに設定では、サーバーは、サーバーに接続するたびに、真表現するために、ここで設定したクライアントの接続レコードは、新しいアイデンティティに接続されて保持していることを示している場合は
21             (options.setCleanSession trueに22である             // 接続ユーザ名
23である             ; options.setUserName(ユーザ名)
 24              // パスワード接続
25              options.setPassword(passWord.toCharArray());
 26れる             // タイムアウト時間が設定されています秒
27              options.setConnectionTimeout(10 );
 28              // セッション秒ハートビートメッセージサーバは、クライアントがクライアントごとに1.5 * 20秒が、この方法に行が再接続メカニズムがないかどうかを決定する送信設定
29              options.setKeepAliveInterval(20である);
 30              // コールバック関数セット
31である              client.setCallback(新しい新しいMqttCallback(){
 32 
33                  @Override
 34                  公共 ボイドconnectionLost(Throwableの原因){
 35                      のSystem.out.println( "connectionLost" )。
36                  }
 37  
38                  @Override
 39                  公共 ボイド messageArrived(文字列トピック、MqttMessageメッセージ)をスロー例外{
 40                      のSystem.out.println( "トピック:" + トピック)。
41                      のSystem.out.println( "のQoS:" + message.getQos())。
42                      のSystem.out.println( "メッセージの内容:" + ストリング(message.getPayload()))。
43  
44                  }
 45  
46                  @Override
 47                  公共 ボイドdeliveryComplete(IMqttDeliveryTokenトークン){
 48                      のSystem.out.println( "deliveryComplete ---------" + token.isComplete())。
49                  }
 50  
51              });
52              client.connect(オプション)。
53              // 订阅消息
54              client.subscribe(トピックQOS)。
55          } キャッチ(例外e){
 56              e.printStackTrace();
57          }
 58      }
 59 }

 

次へ:Spring MVCのに統合MQTT

その他の参考サイト:

1.EMQXヘルプセンター  https://docs.emqx.io/broker/latest/cn/
2.Spring MQTTサポート  https://docs.spring.io/spring-integration/docs/5.0.8.RELEASE/reference/ HTML / mqtt.html