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を入力することができますサーバーのインストールは完了です。
MQTTクライアントのインストールとテスト
クライアントのテストツールはMQTTBox推奨します
; Windows用の別のインストールプログラムクロームプラグインの1:MQTTBoxは、2つの方法があります。
1)クロームChromeはプラグインに必要な壁)上(mqttboxを検索するために、市場に直接プラグイン
2)ここでは、Windowsのインストールパッケージ:ダウンロード
MQTTサーバー接続:
ホストポート1883;図配置された接続サーバ、プロトコル選択MQTT / TCPに次参照
他の一時的試験パラメータに影響を及ぼし、それ自身の研究の関心。
サーバーに正常に接続し、接続されたアイコンが緑色で表示されます
加入者を追加します。
受注のトピックは、「ハロー」であり、QoSはデフォルトで0
出版社を追加
ポスト「ハロー」メッセージ期間{「こんにちは」:「世界」}のトピック、QoSのデフォルト0
ニュースリリースは、加入者はすぐにこのメッセージウィンドウが表示されます。この時点で、クライアントのテストは完了です。
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