MQTTで遊ぶ(Java)
すっかりブログ書くのを放置してしまいましたが、前回MQTTサーバを導入しましたので、実際にコード書いてみます。
お仕事でプログラム書かなくなって久しいですが一番書ける言語はやっぱりJavaなので、Javaで。
・・・といっても、ここに書いてあることを試すだけですが^^; eclipse.org
設定
pom.xmlファイルを用意し次のように記入し、Java用MQTTクライアントを入手します。
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> (中略) <repositories> <repository> <id>Eclipse Paho Repo</id> <url>https://repo.eclipse.org/content/repositories/paho-releases/</url> </repository> </repositories> <dependencies> <dependency> <groupId>org.eclipse.paho</groupId> <artifactId>org.eclipse.paho.client.mqttv3</artifactId> <version>1.1.0</version> </dependency> </dependencies> </project>
これで、org.eclipse.paho.client.mqttv3-1.1.0.jarファイルが落ちてきました。
コード
次にコードを書きます。 コードの内容は、MQTTサーバに接続し、"test"のトピックに"Message from MqttPublishSample"というメッセージを投げるというものです。
※package文は省略 import org.eclipse.paho.client.mqttv3.MqttClient; import org.eclipse.paho.client.mqttv3.MqttConnectOptions; import org.eclipse.paho.client.mqttv3.MqttException; import org.eclipse.paho.client.mqttv3.MqttMessage; import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; public class Sample { public static void main(String[] args) { String topic = "test"; String content = "Message from MqttPublishSample"; int qos = 0; String broker = "tcp://***.***.***.***:1883"; String clientId = "JavaSample"; MemoryPersistence persistence = new MemoryPersistence(); try { MqttClient sampleClient = new MqttClient(broker, clientId, persistence); MqttConnectOptions connOpts = new MqttConnectOptions(); connOpts.setCleanSession(true); System.out.println("Connecting to broker: " + broker); sampleClient.connect(connOpts); System.out.println("Connected"); System.out.println("Publishing message: " + content); MqttMessage message = new MqttMessage(content.getBytes()); message.setQos(qos); sampleClient.publish(topic, message); System.out.println("Message published"); sampleClient.disconnect(); System.out.println("Disconnected"); System.exit(0); } catch (MqttException me) { me.printStackTrace(); } } }
確認
MQTTサーバを立ち上げます。
sudo vernemq start
前回も使用したPaho Clientでサーバにつなぎ、"test"トピックをSubscribeしておきます。
そして、先ほど書いたJavaプログラムを実行。
プログラムのコンソール
Paho Clientの画面
最下行のReceivedにある通り、testトピックのJavaプログラムから発行したメッセージをPaho Clientで受信することが出来ました。