From 14cf887b2e8ff57ea8f4b8277de9fe1c66c62b63 Mon Sep 17 00:00:00 2001 From: "matthew.ng" Date: Wed, 29 Mar 2023 16:59:45 +0800 Subject: [PATCH] add build.bat command for build pj and changed config --- build.bat | 1 + .../towngas/config/MqttConsumerCallBack.java | 7 ++++++- .../ffii/towngas/config/MqttConsumerConfig.java | 16 ++++++++++++---- src/main/resources/application-mqtt-config.yml | 2 +- 4 files changed, 20 insertions(+), 6 deletions(-) create mode 100644 build.bat diff --git a/build.bat b/build.bat new file mode 100644 index 0000000..92a9b7e --- /dev/null +++ b/build.bat @@ -0,0 +1 @@ +gradlew clean build -x test \ No newline at end of file diff --git a/src/main/java/com/ffii/towngas/config/MqttConsumerCallBack.java b/src/main/java/com/ffii/towngas/config/MqttConsumerCallBack.java index ea3628d..cf0d044 100644 --- a/src/main/java/com/ffii/towngas/config/MqttConsumerCallBack.java +++ b/src/main/java/com/ffii/towngas/config/MqttConsumerCallBack.java @@ -10,6 +10,7 @@ import com.google.gson.Gson; public class MqttConsumerCallBack implements MqttCallback { private Gson gson = new Gson(); + private boolean firstMessageReceived = false; @Override public void connectionLost(Throwable throwable) { @@ -18,8 +19,12 @@ public class MqttConsumerCallBack implements MqttCallback { @Override public void messageArrived(String topic, MqttMessage message) throws Exception { + if (!firstMessageReceived) { + // Skip the first message + firstMessageReceived = true; + return; + } String payload = new String(message.getPayload()); - MqttRawData mqttRawData = gson.fromJson(payload, MqttRawData.class); mqttRawData.setTopic(topic); mqttRawData.setQos(message.getQos()); diff --git a/src/main/java/com/ffii/towngas/config/MqttConsumerConfig.java b/src/main/java/com/ffii/towngas/config/MqttConsumerConfig.java index c898b0e..4a52903 100644 --- a/src/main/java/com/ffii/towngas/config/MqttConsumerConfig.java +++ b/src/main/java/com/ffii/towngas/config/MqttConsumerConfig.java @@ -11,6 +11,9 @@ import org.springframework.context.annotation.Configuration; @Configuration public class MqttConsumerConfig { + + private boolean connected = false; + @Value("${spring.mqtt.username}") private String username; @@ -47,13 +50,15 @@ public class MqttConsumerConfig { options.setKeepAliveInterval(20); options.setWill("willTopic", (clientId + "Disconnected").getBytes(), 0, false); client.setCallback(new MqttConsumerCallBack()); - System.out.println("Start Connection"); client.connect(options); - System.out.println("End Connection"); int[] qos = { 1, 1 }; // Topics - String[] topics = { "topic1", "topic2" }; - client.subscribe(topics, qos); + System.out.println("Subscribing to topic \"" + defaultTopic + "\" for client instance \"" + client.getClientId() + + "\" using QoS " + qos[0]); + String[] defaultTopics = defaultTopic.split(","); + client.subscribe(defaultTopics, qos); + // Set the connected flag + connected = true; } catch (MqttException e) { e.printStackTrace(); } @@ -68,6 +73,9 @@ public class MqttConsumerConfig { } public void subscribe(String topic, int qos) { + if (!connected) { + return; + } try { client.subscribe(topic, qos); } catch (MqttException e) { diff --git a/src/main/resources/application-mqtt-config.yml b/src/main/resources/application-mqtt-config.yml index 9408f93..cc4f151 100644 --- a/src/main/resources/application-mqtt-config.yml +++ b/src/main/resources/application-mqtt-config.yml @@ -6,4 +6,4 @@ spring: client: id: cfghiftghigyui default: - topic: topic \ No newline at end of file + topic: topic1, topic2 \ No newline at end of file