最近开发一款物联网相关设备,接触到了mqtt协议,网上找了很多资料,但基本都是“犹抱琵琶半遮面”,总有些内容缺失。可能是作者们认为那些太基础的内容不需要说,但对于我这种初学者来说,就很不善了。
所幸,历经坎坷,总算调通了一个,记录在这里,给像我一样的小白提供一些参考。
首先,基于mqqt协议的通信,你得有一个服务器,这个我都不知道。。。。。。(坑1)
mqtt服务的基本原理是,大家同服务器连接后,可以向服务器订阅n个“主题”,比如“hello”“test”等。然后有张三需要向服务器发送消息时,会告知服务器自己所发送的消息是什么主题的,比如“hello"。服务器收到张三的主题为“hello”的消息后,会查看都有谁向自己订阅了“hello”主题的消息,然后就把消息转发到那些订阅者那里去,完成通信。
我用的是emqx作为mqtt服务器软件,当然还有其他的开源的,这个好找,不多说了。
emqx我放在了阿里云上新购买的实例上。新买实例后,需要修改密码并重启后才能连接到实例上,这一点他们没有提示(坑2)。
然后,安装好,运行起来emqx,发现远程端口没打开,又学习了安全方面的设置,还有监听0.0.0.0地址的端口才是公网端口(坑3)。
把服务器软件装好后,用通讯猫或者paho测试了一下,能够远程正常连接并发送主题(一定要先测试好)。
最后是springboot整合mqtt做客户端部分。
先上原码:放心下载,不需要C币
1. pox.xml 引入需要的包,主要是最后面3个依赖
<?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%20https://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.2.5.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.bam</groupId>
<artifactId>mqtt</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>MQTT-1</name>
<description>Demo project for Shiro</description>
<properties>
<java.version>1.8</java.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-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework

本文详细介绍了一位初学者从零开始接触MQTT协议的过程,包括搭建EMQX服务器、解决常见问题、SpringBoot客户端整合及消息收发实现。通过实战经验分享,帮助读者快速掌握MQTT通信原理与应用。
2154

被折叠的 条评论
为什么被折叠?



