EMQX开源版持久化尝试

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过来数据,然后再将数据保存到数据库。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4se5d6GC-1653889888051)(EMQX开源版持久化尝试.assets/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDgyMTY0NA==,size_16,color_FFFFFF,t_70-165388981535815.png)]

一、最终效果

物理机Windows 10使用EMQX测试时,需要一些关闭防火墙的操作,所以索性在虚拟机中测试

虚拟机中需要有Java环境

根据虚拟机中的数据库配置使用相应的配置文件,主要就是username、password、database的区别

java -jar userdemo.jar -spring.config.location=/home/ubuntu64/java/appliction.properties

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ptV4oS6J-1653889888052)(EMQX开源版持久化尝试.assets/image-20220530104841934-16538789231932.png)]

用/queryAll查看数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9J5KolNs-1653889888053)(EMQX开源版持久化尝试.assets/image-20220530105007418-16538790084374.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C8fga132-1653889888053)(EMQX开源版持久化尝试.assets/image-20220530104830367-16538789123621.png)]

多打印几次数据总不是坏事

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XWg67vyq-1653889888054)(EMQX开源版持久化尝试.assets/image-20220530104945168-16538789862863.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3tVYBmt2-1653889888055)(EMQX开源版持久化尝试.assets/image-20220530105035190-16538790362075.png)]

二、Web服务器搭建

1.项目结构

不正确的四层架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MLKvesCr-1653889888056)(EMQX开源版持久化尝试.assets/image-20220530105849874-16538795308246.png)]

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>
        
  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
EMQX 开源本是一个高性能、可扩展的开源 MQTT 消息代理服务器,可以解决以下问题: 1. MQTT 消息传输:EMQX 提供了完整的 MQTT 协议支持,可以实现可靠的消息传输和通信,使设备和应用程序能够通过 MQTT 协议进行连接、发布和订阅消息。 2. 物联网(IoT)应用:EMQX 的设计目标之一是支持大规模的物联网应用场景。它提供了高性能和可扩展性,可以同时处理大量设备的连接和消息传输,满足物联网应用的要求。 3. 实时数据传输:EMQX 具有低延迟和高吞吐量的特性,适用于需要实时数据传输的应用场景,如实时监控、数据采集等。 4. 可靠性和高可用性:EMQX 支持集群部署,可以通过水平扩展来提高系统的可靠性和可用性。它还提供了故障转移和自动容错机制,保证系统在出现故障时仍然能够正常工作。 5. 数据持久和存储:EMQX 支持将消息数据持久到数据库中,以便后续查询和分析。它提供了多种数据库插件,如 MySQL、PostgreSQL、MongoDB 等,方便将消息数据存储到不同类型的数据库中。 6. 安全性:EMQX 支持 SSL/TLS 加密传输和基于用户名/密码的身份验证,保证消息的安全传输和访问控制。它还提供了访问控制列表(ACL)和插件机制,可以根据需求进行更细粒度的安全配置。 总而言之,EMQX 开源本提供了一个稳定、可靠和高性能的 MQTT 消息代理服务器,适用于各种 IoT 和实时数据传输应用场景,解决了消息传输、可靠性、高可用性、数据持久和安全性等问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值