EMQX Webhook+java+MySQL曲折的持久化尝试
背景:EMQX开源版不提供数据持久化插件使用,可能不好应用到实际,就随意写个demo
环境:Ubuntu 20.0.4(测试)
IDEA 2021.2.2
Mysql 8.0.26
EMQ X 4.4.3
JDK 1.8(开发)
Web服务器用到的框架SpringBoot、Mybatis
可能存在问题:存储数据的延迟较高,不支持大数据量等等
Tips:如果会用PHP(可惜我不会)
可以参考B站视频教程利用webhook将mqtt数据保存到Mysql数据库本项目开源:https://github.com/WENDYPRIDE/EMQX_Java_Mysql
零、思路
来自https://blog.csdn.net/weixin_44821644/article/details/101388095
思路:设备的数据上传到emqx服务器,我们需要一个web服务器来接收EMQX服务器post过来数据,然后再将数据保存到数据库。
一、最终效果
物理机Windows 10使用EMQX测试时,需要一些关闭防火墙的操作,所以索性在虚拟机中测试
虚拟机中需要有Java环境
根据虚拟机中的数据库配置使用相应的配置文件,主要就是username、password、database的区别
java -jar userdemo.jar -spring.config.location=/home/ubuntu64/java/appliction.properties
用/queryAll查看数据
多打印几次数据总不是坏事
二、Web服务器搭建
1.项目结构
不正确的四层架构
2.项目依赖
pom.xml
<!-- JDK1.8-->
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!-- mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<!-- //JDBC-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- //Web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- //数据库MySql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- //Lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>