中间件:SpringBoot-JAVA整合MQTT通信
1、环境Win10;
2、JDK 1.8;
3、SpringBoot 2.7.5;
4、MQTTV3 1.2.5
5、EMQX服务器本地安装使用参考:MQTT学习记录(一、Windows)_我也不清楚的博客-CSDN博客_mqtt默认密码
6、MQTTX 官方客户端可视化工具安装参考:MQTT学习记录(一、Windows)_我也不清楚的博客-CSDN博客_mqtt默认密码
7、源码下载: 资源下载中 SpringBoot项目 JAVA MQTT通信
本例为后端整合MQTT通信,也可以前端直接使用,方法参考:中间件:前端JS整合MQTT通信_我也不清楚的博客-CSDN博客
一、EMQX服务器本地安装使用介绍
参考:MQTT学习记录(一、Windows)_我也不清楚的博客-CSDN博客_mqtt默认密码
二、MQTTX可视化操作工具安装使用
参考:MQTT学习记录(一、Windows)_我也不清楚的博客-CSDN博客_mqtt默认密码
三、SpringBoot JAVA客户端
1、项目结构如下:
2、引用 org.eclipse.paho.client.mqttv3 进行MQTT通信,POM.xml文件如下:
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>mqtt_client</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>mqtt_client</name>
<description>mqtt_client</description>
<properties>
<java.version>8</java.version>
<mqttv3.version>1.2.5</mqttv3.version>
<fastjson.version>1.2.78</fastjson.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- mqtt-->
<dependency>
<groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>${mqttv3.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3、application.yml
server:
port: 8088
spring:
# mqtt 配置
mqtt:
use-flag: true # 是否启用MQTT
username: admin # 账号
password: public # 密码
host-url: tcp://127.0.0.1:11883 # mqtt连接tcp地址
client-id: ${random.int} # 客户端Id,不能相同,采用随机数 ${random.value}
default-topic: mqttDemoTopic # 默认主题
default-qos: 1 # 消息发送方式
default-retained: false # 是否保留
timeout: 30 # 超时时间
keepalive: 30 # 保持连接
clearSession: true # 清除会话(设置为false,断开连接,重连后使用原来的会话 保留订阅的主题,能接收离线期间的消息)
MQTT参数含义如上代码中备注,MQTT连接使用tcp协议,以EMQX服务器中tcp协议端口为标准,如本例中EMQX的tcp协议MQTT端口为1883 / 11883 则,项目作为客户端可使用这两个端口。
4、implements ApplicationRunner 使项目启动时加载run方法,调用emqxClient.connect();进行连接;
5、发布主题(如果主题不存在,则会新建),订阅已有主题
6、模拟测试手动调用发布主题,订阅主题
7、消息回调,即订阅某主题后,另外一方客户端或硬件传感器系统给中间件EMQX的主题发送消息时,JAVA客户端在订阅此主题的前提下将自动接收消息
四、启动测试
1、项目启动 默认创建 / 订阅 默认主题
服务器端可以看到状态
2、模拟在MQTTX客户端发送消息,可以在JAVA客户端收到消息
3、模拟在JAVA客户端新建 / 发布新主题
4、MQTTX也订阅新主题,在JAVA客户端再次发布
5、取消订阅某个主题
相关文章
- Java 8 新特性-菜鸟教程 (6) -Java 8 Optional 类
- Android NDK开发篇(六):Java与原生代码通信(异常处理)
- Java 成员变量和局部变量
- Java经典练习题_Day05
- Java 文件操作二(重命名、设置只读、是否存在、指定目录中创建文件、获取文件修改日期、创建文件、文件路径比较)
- java 程序员 和 三八女神节有什么神秘的关系,你晓得吗? 用Java 给女神绘制一张贺卡你会吗?
- 从Java视角理解CPU上下文切换(Context Switch)
- Java Reflection(七):私有变量和私有方法
- java SpringBoot注解@Async不生效的解决方法
- CSDN日报191016:Java纯干货分享:史上最全的JAVA工程师面试题汇总
- Maven+SpringBoot+Java 搭建restful 接口API框架到docker部署及遇到的问题记录
- SpringBoot出现 java.lang.IllegalArgumentException: Request header is too large 解决方法
- 【Java】JFinal-Render(转)
- jenkins接通gitee的webhook做自动部署 vue、react、java、springBoot
- Java final方法
- [转]springboot 整合mybatisPlus报 java.lang.NoClassDefFoundError: org/mybatis/logging/LoggerFactory
- java基本数据类型转换之向上转型和向下转换
- Java学习-064-Springboot 解决跨域访问简单配置示例
- 正确使用MySQL JDBC setFetchSize()方法解决JDBC处理大结果集 java.lang.OutOfMemoryError: Java heap space
- java安全编码指南之:可见性和原子性
- springboot未授权漏洞(漏洞复现Springboot未授权访问及修复)
- 解决Dynamic Web Module 3.1 requires Java 1.7 or newer
- JAVA_用Java来获取访问者真实的IP地址
- java项目之疫情网课管理系统(springboot+vue源码)
- Java魔法堂:找外援的利器——Runtime.exec详解
- 华为OD机试 - 最小传递延迟(Java) | 机试题+算法思路+考点+代码解析 【2023】
- 实操代码研究各种Java技术-java.toutiao.im
- Java 泛型
- Java Web开发之Servlet、JSP基础