# mqtt **Repository Path**: techat2021/mqtt ## Basic Information - **Project Name**: mqtt - **Description**: 基于org.eclipse.paho.client.mqttv3库的可用于微服务的mqtt公共连接模块,意在于轻松连接mqtt,专注于物联网服务开发。 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2024-05-26 - **Last Updated**: 2024-05-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # spring boot/cloud + mqtt连接通用解决方案 #### 介绍 基于org.eclipse.paho.client.mqttv3库的可用于微服务的mqtt公共连接模块,意在于轻松连接mqtt,专注于物联网服务开发。 #### 软件架构 本通用模块并不包含MQTT Broker服务,而是通用连接模块(请注意)。并提供通用的REST ful风格的业务接口方案。 此模块设计思想是,将mqtt连接配置作为共通部分解耦出来,不同种类的设备,新建不同的spring服务管理,而同种设备的不同子类,通过新建实现类控制。 #### 安装教程 - 在此之前,你需要了解mqtt协议,以及mqtt订阅的通配方式。(本文采用的是rabbitMQ作为MQTT Broker的解决方案,所以通配方式也是rabbitMQ的) - 拉取 master/autoTopic分支。它们的区别只有一点,就是auto版本可以根据yml中的服务名自动配置订阅/发布头。 - 如果想将此模块整合进入自己的boot/cloud 中,那么只需要将common包引入进来就可以使用。 注:如果改动包名,记得在spring.factories中更新路径。(如果不更新,mqttconnect **无法自动注入** 你的spring中) #### 使用说明 1. 下载好代码后,打开yml文件配置,配置好属于你的mqtt连接信息。便可以开始使用了,主打的就是方便。 2. 接收信息 - 打开示例模块中的FeederServiceImpl实现类,这其实就对应着物联网业务实现类,在这之中有两个测试方法提供给你测试,分别是test1,test2。你可以通过其他mqtt客户端测试此接口。发布topic:demoIot.server.V3.test1 内容随便写写。这样,你就会发现test1方法被调用了! 3. 发布信息 - 注入IMqttPublish接口,即可调用其中的send方法发布信息了。还有一件事,扩展功能:数据初步过滤功能,实现IMqttDataValidator接口,即可将传入的payLoad进行数据过滤,返回true即为通过。例子:FeederDataValidator。 3. 配置属于你的服务 - 新建属于你的业务实现类,实现IMqttService接口,version可以随意设计,但注意通配规则。接下来就可以随意设计方法啦。想要调用就是发布topic为: 服务名.server.version.方法名。 #### 特别申明 欢迎大家使用或者对本模块进行二次开发,如有设计不便,敬请谅解。 **为了测试方便,并没有将传入的数据进行序列化。并且没有把payload的数据传入到对应的方法中,还请各位自行改写,改写位置就在mqttConnect的messageArrived方法中** ### 改写方案 - 更改chcek的入参,将设备号或者方法名传入,在check中进行设备认证和状态同步。 - 只有一套服务需要调用时,可更改订阅规则,和读取topic位置,将version隐去。 #### 参与贡献 1. uouie