初学者springboot集成mqtt实例

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

最近开发一款物联网相关设备,接触到了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
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值