前提
- OS: Windows 10 Pro
- Java: openjdk version “11.0.2” 2019-01-15
MQTT プロジェクトのひな形を作成
Vert.x Starter - Create new Eclipse Vert.x applications を使用し、プロジェクトのひな形を作成する。
MQTT ブローカー起動
MQTT パブリッシャー・サブスクライバーの実装
MQTT | Eclipse Vert.x を参考に、自分で publish したトピックを自分で subscribe する MQTT クライアントを実装する。
package dev.mikoto2000.study.vertx.mqtt;
import java.time.LocalDateTime;
import io.netty.handler.codec.mqtt.MqttQoS;
import io.vertx.core.AbstractVerticle;
import io.vertx.core.Promise;
import io.vertx.core.buffer.Buffer;
import io.vertx.mqtt.MqttClient;
public class MainVerticle extends AbstractVerticle {
@Override
public void start(Promise<Void> startPromise) throws Exception {
MqttClient client = MqttClient.create(vertx);
client.connect(1883, "localhost", s -> {
System.out.println("connected localhost:1883.");
client.publishHandler(topic -> {
System.out.println(String.format("{ topic: %s, payload: %s }", topic.topicName(), topic.payload().toString()));
}).subscribe("temperature", 2);
vertx.setPeriodic(1000, id -> {
client.publish("temperature",
Buffer.buffer(LocalDateTime.now().toString()),
MqttQoS.AT_LEAST_ONCE,
false,
false);
});
});
}
}
1 秒周期で publish し、subscribe していることが確認できる。
実行ログ
PS C:\Users\mikoto\project\MiscellaneousStudy\java\Vertx\mqtt> ./mvnw compile exec:java
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------< dev.mikoto2000.study.vertx:mqtt >-------------------
[INFO] Building mqtt 1.0.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ mqtt ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Users\mikoto\project\MiscellaneousStudy\java\Vertx\mqtt\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ mqtt ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- exec-maven-plugin:3.0.0:java (default-cli) @ mqtt ---
8月 20, 2021 9:19:01 午前 io.vertx.core.impl.BlockedThreadChecker
警告: Thread Thread[vert.x-eventloop-thread-1,5,io.vertx.core.Launcher] has been blocked for 2348 ms, time limit is 2000 ms
8月 20, 2021 9:19:02 午前 io.vertx.mqtt.impl.MqttClientImpl
情報: Connection with localhost:1883 established successfully
connected localhost:1883.
{ topic: temperature, payload: 2021-08-20T09:19:03.505719800 }
{ topic: temperature, payload: 2021-08-20T09:19:04.506401500 }
{ topic: temperature, payload: 2021-08-20T09:19:05.506077900 }
{ topic: temperature, payload: 2021-08-20T09:19:06.505243 }
{ topic: temperature, payload: 2021-08-20T09:19:07.505362700 }
{ topic: temperature, payload: 2021-08-20T09:19:08.505559100 }
...(snip)
以上。
0 件のコメント:
コメントを投稿