浏览代码

add files

Tinger 2 年之前
父节点
当前提交
cf98219f21
共有 51 个文件被更改,包括 977 次插入0 次删除
  1. 3 0
      Readme.md
  2. 79 0
      pom.xml
  3. 26 0
      src/main/java/com/huimv/Test02Application.java
  4. 20 0
      src/main/java/com/huimv/controller/DeviceController.java
  5. 31 0
      src/main/java/com/huimv/controller/PeopleController.java
  6. 23 0
      src/main/java/com/huimv/controller/PublishController.java
  7. 23 0
      src/main/java/com/huimv/controller/SubscribeController.java
  8. 35 0
      src/main/java/com/huimv/entity/Device.java
  9. 37 0
      src/main/java/com/huimv/entity/People.java
  10. 16 0
      src/main/java/com/huimv/mapper/DeviceMapper.java
  11. 16 0
      src/main/java/com/huimv/mapper/PeopleMapper.java
  12. 93 0
      src/main/java/com/huimv/publish/PublishMQTT.java
  13. 16 0
      src/main/java/com/huimv/service/IDeviceService.java
  14. 16 0
      src/main/java/com/huimv/service/IPeopleService.java
  15. 20 0
      src/main/java/com/huimv/service/impl/DeviceServiceImpl.java
  16. 32 0
      src/main/java/com/huimv/service/impl/PeopleServiceImpl.java
  17. 62 0
      src/main/java/com/huimv/subscribe/ConsumerMQTT.java
  18. 58 0
      src/main/java/com/huimv/subscribe/ConsumerMQTT2.java
  19. 50 0
      src/main/java/com/huimv/subscribe/PushCallback.java
  20. 79 0
      src/main/java/com/huimv/untils/Result.java
  21. 41 0
      src/main/java/com/huimv/untils/ResultCode.java
  22. 71 0
      src/main/java/com/huimv/untils/ResultUtil.java
  23. 36 0
      src/main/java/com/huimv/untils/SpringUtil.java
  24. 33 0
      src/main/resources/application-dev.yml
  25. 4 0
      src/main/resources/application.properties
  26. 5 0
      src/main/resources/mapper/DeviceMapper.xml
  27. 5 0
      src/main/resources/mapper/PeopleMapper.xml
  28. 33 0
      target/classes/application-dev.yml
  29. 4 0
      target/classes/application.properties
  30. 二进制
      target/classes/com/huimv/Test02Application.class
  31. 二进制
      target/classes/com/huimv/controller/DeviceController.class
  32. 二进制
      target/classes/com/huimv/controller/PeopleController.class
  33. 二进制
      target/classes/com/huimv/controller/PublishController.class
  34. 二进制
      target/classes/com/huimv/controller/SubscribeController.class
  35. 二进制
      target/classes/com/huimv/entity/Device.class
  36. 二进制
      target/classes/com/huimv/entity/People.class
  37. 二进制
      target/classes/com/huimv/mapper/DeviceMapper.class
  38. 二进制
      target/classes/com/huimv/mapper/PeopleMapper.class
  39. 二进制
      target/classes/com/huimv/publish/PublishMQTT.class
  40. 二进制
      target/classes/com/huimv/service/IDeviceService.class
  41. 二进制
      target/classes/com/huimv/service/IPeopleService.class
  42. 二进制
      target/classes/com/huimv/service/impl/DeviceServiceImpl.class
  43. 二进制
      target/classes/com/huimv/service/impl/PeopleServiceImpl.class
  44. 二进制
      target/classes/com/huimv/subscribe/ConsumerMQTT.class
  45. 二进制
      target/classes/com/huimv/subscribe/PushCallback.class
  46. 二进制
      target/classes/com/huimv/untils/Result.class
  47. 二进制
      target/classes/com/huimv/untils/ResultCode.class
  48. 二进制
      target/classes/com/huimv/untils/ResultUtil.class
  49. 二进制
      target/classes/com/huimv/untils/SpringUtil.class
  50. 5 0
      target/classes/mapper/DeviceMapper.xml
  51. 5 0
      target/classes/mapper/PeopleMapper.xml

+ 3 - 0
Readme.md

@@ -0,0 +1,3 @@
+# Add Files
+
+copy files into project

+ 79 - 0
pom.xml

@@ -0,0 +1,79 @@
+<?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">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.humv</groupId>
+    <artifactId>test02</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.7.0</version>
+        <relativePath/> <!-- lookup parent from repository -->
+    </parent>
+
+    <dependencies>
+        <!--mqtt相关依赖-->
+        <dependency>
+            <groupId>org.springframework.integration</groupId>
+            <artifactId>spring-integration-stream</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-integration</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.integration</groupId>
+            <artifactId>spring-integration-mqtt</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.paho</groupId>
+            <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
+            <version>1.2.2</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.7.11</version>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.4.2</version>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-extension</artifactId>
+            <version>3.4.2</version>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-generator</artifactId>
+            <version>3.2.0</version>
+        </dependency>
+    </dependencies>
+</project>

+ 26 - 0
src/main/java/com/huimv/Test02Application.java

@@ -0,0 +1,26 @@
+package com.huimv;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.ApplicationContext;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+/**
+ * @Project : work-study
+ * @Package : ${}
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2023/1/7
+ **/
+@SpringBootApplication
+@EnableScheduling
+@MapperScan("com.huimv.mapper")
+public class Test02Application {
+    public static void main(String[] args) throws InterruptedException {
+        ApplicationContext applicationContext = SpringApplication.run(Test02Application.class, args);
+    }
+
+
+}

+ 20 - 0
src/main/java/com/huimv/controller/DeviceController.java

@@ -0,0 +1,20 @@
+package com.huimv.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2023-04-14
+ */
+@RestController
+@RequestMapping("/device")
+public class DeviceController {
+
+}

+ 31 - 0
src/main/java/com/huimv/controller/PeopleController.java

@@ -0,0 +1,31 @@
+package com.huimv.controller;
+
+
+import com.huimv.entity.People;
+import com.huimv.service.IPeopleService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2023-04-12
+ */
+@RestController
+@RequestMapping("/people")
+public class PeopleController {
+
+    @Autowired
+    private IPeopleService peopleService;
+
+    @RequestMapping("/test")
+    public void test(@RequestBody People people) {
+        peopleService.save(people);
+    }
+}

+ 23 - 0
src/main/java/com/huimv/controller/PublishController.java

@@ -0,0 +1,23 @@
+package com.huimv.controller;
+
+
+import com.huimv.publish.PublishMQTT;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@RestController
+@RequestMapping("/test")
+public class PublishController {
+
+    @RequestMapping("/send")
+    public void test(@RequestBody Map<String, String> paramsMap) {
+        String message = paramsMap.get("message");
+        PublishMQTT client = new PublishMQTT();
+        client.start();
+        System.out.println("ss");
+        client.pubMessage(message,"test");
+    }
+}

+ 23 - 0
src/main/java/com/huimv/controller/SubscribeController.java

@@ -0,0 +1,23 @@
+package com.huimv.controller;
+
+
+import com.huimv.subscribe.ConsumerMQTT;
+import com.huimv.untils.Result;
+import com.huimv.untils.ResultCode;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@RestController
+@RequestMapping("/test")
+public class SubscribeController {
+
+    @RequestMapping("/receive")
+    public Result getMessage(@RequestBody Map<String, String> paramsMap) {
+        ConsumerMQTT client = new ConsumerMQTT();
+        client.start();
+        return new Result(ResultCode.SUCCESS);
+    }
+}

+ 35 - 0
src/main/java/com/huimv/entity/Device.java

@@ -0,0 +1,35 @@
+package com.huimv.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2023-04-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("device")
+public class Device implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private String deviceCode;
+
+    private String message;
+
+
+}

+ 37 - 0
src/main/java/com/huimv/entity/People.java

@@ -0,0 +1,37 @@
+package com.huimv.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2023-04-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("people")
+public class People implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private String name;
+
+    private Integer age;
+
+    private String sex;
+
+
+}

+ 16 - 0
src/main/java/com/huimv/mapper/DeviceMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.mapper;
+
+import com.huimv.entity.Device;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2023-04-14
+ */
+public interface DeviceMapper extends BaseMapper<Device> {
+
+}

+ 16 - 0
src/main/java/com/huimv/mapper/PeopleMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.mapper;
+
+import com.huimv.entity.People;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2023-04-12
+ */
+public interface PeopleMapper extends BaseMapper<People> {
+
+}

+ 93 - 0
src/main/java/com/huimv/publish/PublishMQTT.java

@@ -0,0 +1,93 @@
+package com.huimv.publish;
+
+import com.huimv.entity.Device;
+import com.huimv.entity.People;
+import com.huimv.service.IDeviceService;
+import com.huimv.service.IPeopleService;
+import com.huimv.service.impl.DeviceServiceImpl;
+import com.huimv.untils.SpringUtil;
+import org.eclipse.paho.client.mqttv3.MqttClient;
+import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
+import org.eclipse.paho.client.mqttv3.MqttMessage;
+import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.List;
+
+@Configuration
+public class PublishMQTT {
+
+    @Autowired
+    private IPeopleService peopleService;
+    @Autowired
+    private IDeviceService deviceService;
+
+    public static final String HOST = "tcp://192.168.1.68:1883";
+    private static final String clientid = "publish";
+    private MqttClient client;
+    private MqttConnectOptions options;
+
+    private String userName = "admin";    //非必须
+    private String passWord = "admin";  //非必须
+
+    public void start() {
+        try {
+            // host为主机名,clientid即连接MQTT的客户端ID,一般以唯一标识符表示,MemoryPersistence设置clientid的保存形式,默认为以内存保存
+            client = new MqttClient(HOST, clientid, new MemoryPersistence());
+            // MQTT的连接设置
+            options = new MqttConnectOptions();
+            // 设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录,设置为true表示每次连接到服务器都以新的身份连接
+            options.setCleanSession(true);
+            // 设置连接的用户名
+            options.setUserName(userName);
+            // 设置连接的密码
+            options.setPassword(passWord.toCharArray());
+            // 设置超时时间 单位为秒
+            options.setConnectionTimeout(10);
+            // 设置会话心跳时间 单位为秒 服务器会每隔1.5*20秒的时间向客户端发送个消息判断客户端是否在线,但这个方法并没有重连的机制
+            options.setKeepAliveInterval(20);
+            //设置断开后重新连接
+            options.setAutomaticReconnect(true);
+            // 设置回调
+
+            //client.setCallback(new PushCallback());
+//            MqttTopic topic = client.getTopic(TOPIC1);
+            //遗嘱
+           // options.setWill(topic, "关闭前最后的信息".getBytes(), 1, true);
+            client.connect(options);
+
+            DeviceServiceImpl deviceService = SpringUtil.getBean(DeviceServiceImpl.class);
+            List<Device> list = deviceService.list();
+            System.out.println(list);
+            pubMessage("list","huimv_down_867699060002756");
+            //向client2发送消息
+//            pubMessage("张三,20,男","test");
+//            client.unsubscribe("/test/01");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 消息发送
+     * @param message
+     * @param topic
+     */
+    public  void pubMessage(String message,String topic){
+        MqttMessage mess = new MqttMessage();
+        mess.setQos(1);
+        mess.setRetained(true);
+        mess.setPayload(message.getBytes());
+        try {
+            client.publish(topic, mess);
+        } catch (Exception e) {
+            //LOGGER.error(e.getLocalizedMessage());
+        }
+    }
+
+    public static void main(String[] args) {
+        PublishMQTT client1 = new PublishMQTT();
+        client1.start();
+    }
+}

+ 16 - 0
src/main/java/com/huimv/service/IDeviceService.java

@@ -0,0 +1,16 @@
+package com.huimv.service;
+
+import com.huimv.entity.Device;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author author
+ * @since 2023-04-14
+ */
+public interface IDeviceService extends IService<Device> {
+
+}

+ 16 - 0
src/main/java/com/huimv/service/IPeopleService.java

@@ -0,0 +1,16 @@
+package com.huimv.service;
+
+import com.huimv.entity.People;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author author
+ * @since 2023-04-12
+ */
+public interface IPeopleService extends IService<People> {
+    void addPeople(String[] people);
+}

+ 20 - 0
src/main/java/com/huimv/service/impl/DeviceServiceImpl.java

@@ -0,0 +1,20 @@
+package com.huimv.service.impl;
+
+import com.huimv.entity.Device;
+import com.huimv.mapper.DeviceMapper;
+import com.huimv.service.IDeviceService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2023-04-14
+ */
+@Service
+public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> implements IDeviceService {
+
+}

+ 32 - 0
src/main/java/com/huimv/service/impl/PeopleServiceImpl.java

@@ -0,0 +1,32 @@
+package com.huimv.service.impl;
+
+import com.huimv.entity.People;
+import com.huimv.mapper.PeopleMapper;
+import com.huimv.service.IPeopleService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2023-04-12
+ */
+@Service
+public class PeopleServiceImpl extends ServiceImpl<PeopleMapper, People> implements IPeopleService {
+
+    @Autowired
+    private PeopleMapper peopleMapper;
+
+    @Override
+    public void addPeople(String[] people) {
+        People people1 = new People();
+        people1.setName(people[0]);
+        people1.setAge(Integer.parseInt(people[1]));
+        people1.setSex(people[2]);
+        peopleMapper.insert(people1);
+    }
+}

+ 62 - 0
src/main/java/com/huimv/subscribe/ConsumerMQTT.java

@@ -0,0 +1,62 @@
+package com.huimv.subscribe;
+
+
+import org.eclipse.paho.client.mqttv3.MqttClient;
+import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
+import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class ConsumerMQTT {
+    public static final String HOST = "tcp://192.168.1.68:1883";
+//    public static final String TOPIC1 = "/today/#";//请阅地址
+    private static final String clientid = "subscribe";
+    private MqttClient client;
+    private MqttConnectOptions options;
+
+    private String userName = "admin";    //非必须
+    private String passWord = "admin";  //非必须
+
+    public void start() {
+        try {
+            // host为主机名,clientid即连接MQTT的客户端ID,一般以唯一标识符表示,MemoryPersistence设置clientid的保存形式,默认为以内存保存
+            client = new MqttClient(HOST, clientid, new MemoryPersistence());
+            // MQTT的连接设置
+            options = new MqttConnectOptions();
+            // 设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录,设置为true表示每次连接到服务器都以新的身份连接
+            options.setCleanSession(true);
+            // 设置连接的用户名
+            options.setUserName(userName);
+            // 设置连接的密码
+            options.setPassword(passWord.toCharArray());
+            // 设置超时时间 单位为秒
+            options.setConnectionTimeout(10);
+            // 设置会话心跳时间 单位为秒 服务器会每隔1.5*20秒的时间向客户端发送个消息判断客户端是否在线,但这个方法并没有重连的机制
+            options.setKeepAliveInterval(20);
+            //设置断开后重新连接
+            options.setAutomaticReconnect(true);
+            // 设置回调
+            client.setCallback(new PushCallback());
+//            MqttTopic topic = client.getTopic(TOPIC1);
+            //setWill方法,如果项目中需要知道客户端是否掉线可以调用该方法。设置最终端口的通知消息
+            //遗嘱
+           // options.setWill(topic, "关闭前最后的信息".getBytes(), 1, true);
+            client.connect(options);
+
+            //订阅消息
+//            int[] Qos = {1};//0:最多一次 、1:最少一次 、2:只有一次
+//            String[] topic1 = {TOPIC1};
+//            client.subscribe(topic1, Qos);
+            client.subscribe("test",1);
+
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public static void main(String[] args) {
+        ConsumerMQTT client2 = new ConsumerMQTT();
+        client2.start();
+    }
+}

+ 58 - 0
src/main/java/com/huimv/subscribe/ConsumerMQTT2.java

@@ -0,0 +1,58 @@
+//package com.huimv.subcribe;
+//
+//import org.eclipse.paho.client.mqttv3.MqttClient;
+//import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
+//import org.eclipse.paho.client.mqttv3.MqttTopic;
+//import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
+//
+//public class ConsumerMQTT2 {
+//    public static final String HOST = "tcp://192.168.1.14:1883";
+//    public static final String TOPIC1 = "today1234";//请阅地址
+//    private static final String clientid = "client22";
+//    private MqttClient client;
+//    private MqttConnectOptions options;
+//
+//    private String userName = "admin";    //非必须
+//    private String passWord = "admin";  //非必须
+//
+//    private void start() {
+//        try {
+//            // host为主机名,clientid即连接MQTT的客户端ID,一般以唯一标识符表示,MemoryPersistence设置clientid的保存形式,默认为以内存保存
+//            client = new MqttClient(HOST, clientid, new MemoryPersistence());
+//            // MQTT的连接设置
+//            options = new MqttConnectOptions();
+//            // 设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录,设置为true表示每次连接到服务器都以新的身份连接
+//            options.setCleanSession(false);
+//            // 设置连接的用户名
+//            options.setUserName(userName);
+//            // 设置连接的密码
+//            options.setPassword(passWord.toCharArray());
+//            // 设置超时时间 单位为秒
+//            options.setConnectionTimeout(10);
+//            // 设置会话心跳时间 单位为秒 服务器会每隔1.5*20秒的时间向客户端发送个消息判断客户端是否在线,但这个方法并没有重连的机制
+//            options.setKeepAliveInterval(20);
+//            //设置断开后重新连接
+//            options.setAutomaticReconnect(true);
+//            // 设置回调
+//            client.setCallback(new PushCallback());
+//            MqttTopic topic = client.getTopic(TOPIC1);
+//            //setWill方法,如果项目中需要知道客户端是否掉线可以调用该方法。设置最终端口的通知消息
+//            //遗嘱
+//           // options.setWill(topic, "关闭前最后的信息".getBytes(), 1, true);
+//            client.connect(options);
+//            //订阅消息
+//            int[] Qos = {1};//0:最多一次 、1:最少一次 、2:只有一次
+//            String[] topic1 = {TOPIC1};
+//            client.subscribe(topic1, Qos);
+//
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+//    }
+//
+//
+//    public static void main(String[] args) {
+//        ConsumerMQTT2 client2 = new ConsumerMQTT2();
+//        client2.start();
+//    }
+//}

+ 50 - 0
src/main/java/com/huimv/subscribe/PushCallback.java

@@ -0,0 +1,50 @@
+package com.huimv.subscribe;
+
+import com.huimv.entity.People;
+import com.huimv.service.IPeopleService;
+import com.huimv.service.impl.PeopleServiceImpl;
+import com.huimv.untils.SpringUtil;
+import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
+import org.eclipse.paho.client.mqttv3.MqttCallback;
+import org.eclipse.paho.client.mqttv3.MqttMessage;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+//接收消息回调
+class PushCallback implements MqttCallback {
+
+
+    @Override
+    public void connectionLost(Throwable cause) {
+
+        // 连接丢失后,一般在这里面进行重连
+        System.out.println("连接断开,可以做重连");
+    }
+
+    @Override
+    public void deliveryComplete(IMqttDeliveryToken token) {
+        System.out.println("deliveryComplete---------" + token.isComplete());
+    }
+
+    @Override
+    public void messageArrived(String topic, MqttMessage message) throws Exception {
+        // subscribe后得到的消息会执行到这里面
+        System.out.println("接收消息主题 : " + topic);
+        System.out.println("接收消息Qos : " + message.getQos());
+        System.out.println("接收消息内容 : " + new String(message.getPayload()));
+        System.out.println("开始处理当前数据...");
+
+        String messages = new String(message.getPayload());
+        String[] split = messages.split(",");
+//        PeopleServiceImpl peopleService = SpringUtil.getBean(PeopleServiceImpl.class);//创建impl实例
+//        People people = new People();
+//        people.setName(split[0]);
+//        people.setAge(Integer.parseInt(split[1]));
+//        people.setSex(split[2]);
+//        peopleService.save(people);
+//        peopleService.addPeople(split);
+        System.out.println("数据处理完成!");
+    }
+
+}

+ 79 - 0
src/main/java/com/huimv/untils/Result.java

@@ -0,0 +1,79 @@
+package com.huimv.untils;
+
+import java.io.Serializable;
+
+public class Result implements Serializable {
+
+    private boolean success;
+    private Integer code;
+    private String message;
+
+    public boolean isSuccess() {
+        return success;
+    }
+
+    public void setSuccess(boolean success) {
+        this.success = success;
+    }
+
+    public Integer getCode() {
+        return code;
+    }
+
+    public void setCode(Integer code) {
+        this.code = code;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
+    public Object getData() {
+        return data;
+    }
+
+    public void setData(Object data) {
+        this.data = data;
+    }
+
+    private Object data;
+
+    //不需要返回数据时使用
+    public Result(ResultCode code) {
+        this.success = code.success;
+        this.code = code.code;
+        this.message = code.message;
+    }
+
+    public Result(ResultCode code, Object data) {
+        this.success = code.success;
+        this.code = code.code;
+        this.message = code.message;
+        this.data = data;
+    }
+
+    public Result(Integer code, String message, boolean success) {
+        this.code = code;
+        this.message = message;
+        this.success = success;
+    }
+
+    /*
+     * 调用ResultCode类封装常用的返回数据
+     */
+    public static Result SUCCESS(){
+        return new Result(ResultCode.SUCCESS);
+    }
+
+    public static Result ERROR(){
+        return new Result(ResultCode.SERVER_ERROR);
+    }
+
+    public static Result FAIL(){
+        return new Result(ResultCode.FAIL);
+    }
+}

+ 41 - 0
src/main/java/com/huimv/untils/ResultCode.java

@@ -0,0 +1,41 @@
+package com.huimv.untils;
+
+public enum ResultCode {
+    SUCCESS(true,10000,"操作成功!"),
+    //---系统错误返回码-----
+    FAIL(false,10001,"操作失败"),
+    UNAUTHENTICATED(false,10002,"您还未登录"),
+    UNAUTHORISE(false,10003,"权限不足"),
+    SERVER_ERROR(false,99999,"抱歉,系统繁忙,请稍后重试!"),
+
+    //---用户操作返回码  2xxxx----
+    MOBILEORPASSWORDERROR(false,20001,"用户名或密码错误");
+    //---企业操作返回码  3xxxx----
+    //---权限操作返回码----
+    //---其他操作返回码----
+
+    //操作是否成功
+    boolean success;
+    //操作代码
+    int code;
+    //提示信息
+    String message;
+
+    ResultCode(boolean success, int code, String message){
+        this.success = success;
+        this.code = code;
+        this.message = message;
+    }
+
+    public boolean success() {
+        return success;
+    }
+
+    public int code() {
+        return code;
+    }
+
+    public String message() {
+        return message;
+    }
+}

+ 71 - 0
src/main/java/com/huimv/untils/ResultUtil.java

@@ -0,0 +1,71 @@
+package com.huimv.untils;
+
+import cn.hutool.core.util.ObjectUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Project : huimv-breed
+ * @Package : IntelliJ IDEA
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2022/9/27
+ **/
+@Component
+public class ResultUtil {
+
+    public static Result result(int rows){
+        if(rows == 0){
+            return new Result(ResultCode.FAIL,"处理失败.");
+        }else{
+            return new Result(ResultCode.SUCCESS,"处理成功.");
+        }
+    }
+
+    public static Result list(List o){
+        if(ObjectUtil.isNotEmpty(o) ){
+            return new Result(ResultCode.SUCCESS,o);
+        }else{
+            return new Result(ResultCode.FAIL,new ArrayList<>());
+        }
+    }
+    public static Result getResult(Integer rows){
+        if(rows > 0){
+            return new Result(ResultCode.SUCCESS);
+        }else{
+            return new Result(ResultCode.FAIL);
+        }
+    }
+
+    public static Result addResult(Integer rows){
+        if(rows > 0){
+            return new Result(10000, "添加成功",true);
+        }else{
+            return new Result(10001, "添加失败",false);
+        }
+    }
+    public static Result updateResult(Integer rows){
+        if(rows > 0){
+            return new Result(10000, "修改成功",true);
+        }else{
+            return new Result(10001, "修改失败",false);
+        }
+    }
+    public static Result deleteResult(Integer rows){
+        if(rows > 0){
+            return new Result(10000, "删除成功",true);
+        }else{
+            return new Result(10001, "删除失败",false);
+        }
+    }
+
+    public static Result exist(){
+       return new Result(10001, "该数据已存在",false);
+    }
+//    public static Result isNull(){
+//        return new Result(ResultCode.DATA_NULL);
+//    }
+}

+ 36 - 0
src/main/java/com/huimv/untils/SpringUtil.java

@@ -0,0 +1,36 @@
+package com.huimv.untils;
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+
+@Component
+public class SpringUtil implements ApplicationContextAware {
+    private static ApplicationContext applicationContext = null;
+
+    @Override
+    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+        if(SpringUtil.applicationContext == null){
+            SpringUtil.applicationContext  = applicationContext;
+        }
+    }
+
+    public static ApplicationContext getApplicationContext() {
+        return applicationContext;
+    }
+
+    public static Object getBean(String name){
+        return getApplicationContext().getBean(name);
+    }
+
+    public static <T> T getBean(Class<T> clazz){
+        return getApplicationContext().getBean(clazz);
+    }
+
+    public static <T> T getBean(String name,Class<T> clazz){
+        return getApplicationContext().getBean(name, clazz);
+    }
+
+
+}

+ 33 - 0
src/main/resources/application-dev.yml

@@ -0,0 +1,33 @@
+server:
+  port: 8080
+
+spring:
+  application:
+    name: test02
+
+  datasource:
+    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+    username: root
+    password: 123456
+    driver-class-name: com.mysql.cj.jdbc.Driver
+
+  jpa:
+    show-sql: true
+    database: mysql
+    hibernate:
+      ddl-auto: update
+    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
+    open-in-view: true
+
+#
+#  #redis
+#  redis:
+#    host: 122.112.224.199
+#    port: 6379
+#    password: hm123456
+
+mybatis-plus:
+  configuration:
+    #    log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+

+ 4 - 0
src/main/resources/application.properties

@@ -0,0 +1,4 @@
+spring.profiles.active=dev
+
+#¿ªÆô½¡¿µ¼à¿Ø
+management.endpoints.web.exposure.include=*

+ 5 - 0
src/main/resources/mapper/DeviceMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huimv.mapper.DeviceMapper">
+
+</mapper>

+ 5 - 0
src/main/resources/mapper/PeopleMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huimv.mapper.PeopleMapper">
+
+</mapper>

+ 33 - 0
target/classes/application-dev.yml

@@ -0,0 +1,33 @@
+server:
+  port: 8080
+
+spring:
+  application:
+    name: test02
+
+  datasource:
+    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+    username: root
+    password: 123456
+    driver-class-name: com.mysql.cj.jdbc.Driver
+
+  jpa:
+    show-sql: true
+    database: mysql
+    hibernate:
+      ddl-auto: update
+    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
+    open-in-view: true
+
+#
+#  #redis
+#  redis:
+#    host: 122.112.224.199
+#    port: 6379
+#    password: hm123456
+
+mybatis-plus:
+  configuration:
+    #    log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+

+ 4 - 0
target/classes/application.properties

@@ -0,0 +1,4 @@
+spring.profiles.active=dev
+
+#�����������
+management.endpoints.web.exposure.include=*

二进制
target/classes/com/huimv/Test02Application.class


二进制
target/classes/com/huimv/controller/DeviceController.class


二进制
target/classes/com/huimv/controller/PeopleController.class


二进制
target/classes/com/huimv/controller/PublishController.class


二进制
target/classes/com/huimv/controller/SubscribeController.class


二进制
target/classes/com/huimv/entity/Device.class


二进制
target/classes/com/huimv/entity/People.class


二进制
target/classes/com/huimv/mapper/DeviceMapper.class


二进制
target/classes/com/huimv/mapper/PeopleMapper.class


二进制
target/classes/com/huimv/publish/PublishMQTT.class


二进制
target/classes/com/huimv/service/IDeviceService.class


二进制
target/classes/com/huimv/service/IPeopleService.class


二进制
target/classes/com/huimv/service/impl/DeviceServiceImpl.class


二进制
target/classes/com/huimv/service/impl/PeopleServiceImpl.class


二进制
target/classes/com/huimv/subscribe/ConsumerMQTT.class


二进制
target/classes/com/huimv/subscribe/PushCallback.class


二进制
target/classes/com/huimv/untils/Result.class


二进制
target/classes/com/huimv/untils/ResultCode.class


二进制
target/classes/com/huimv/untils/ResultUtil.class


二进制
target/classes/com/huimv/untils/SpringUtil.class


+ 5 - 0
target/classes/mapper/DeviceMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huimv.mapper.DeviceMapper">
+
+</mapper>

+ 5 - 0
target/classes/mapper/PeopleMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huimv.mapper.PeopleMapper">
+
+</mapper>