spring实现mqtt服务端_SpringBoot 集成Mqtt,protobuf服务端搭建

本文介绍了如何使用SpringBoot构建一个Mqtt服务端,包括broker、Application Server、Publisher和Subscriber的组成。同时,展示了如何使用mosquitto进行安装、配置和测试pub/sub。还展示了如何在Java-Mqtt-Server中集成protobuf,用于封装和传输消息。
摘要由CSDN通过智能技术生成

代码已开源在GitHub,如果有帮助欢迎star。

Architecture

Mqtt-server-arch.jpg

Server side 构成

broker (mqtt核心:用于消息的发送管理) 类似 pub-sub 队列

Application Server用于处理RestFul的请求,转发为Mqtt消息

Publisher 本质是Mqtt client,用于发布server端消息到broker

Subscriber 本质是Mqtt client,用于从broker订阅client端消息

Client side

Publisher用于发布client端消息到broker

Subscriber用于从broker订阅server端的消息

Client 用于发送RestFul 请求给Application Server触发消息pub/sub

总结:从结构上Broker算是Mqtt的本质上的Server端,从业务上讲封装了Mqtt Client pub/sub的Application server和Broker共同构成了业务上的Server端

安装mosquitto及基本使用

安装

# Install Mosquitto Broker

sudo apt-get update

sudo apt-get install mosquitto

# Install the Clients

sudo apt-get install mosquitto-clients

开启、停止查看状态

# 查看状态

sudo service mosquitto status

# 使用默认配置打开mosquitto, 使用-v打开log功能

sudo mosquitto -c /etc/mosquitto/mosquitto.conf -v

# 停止

sudo service mosquitto stop

#开启

sudo service mosquitto start

使用mosquitto测试pub/sub

注意 pub和sub的clientid不能相同,相同会刷屏。

# 简单测试发布。 -h host -t topic -m message

mosquitto_pub -h localhost -t mqtt-test -m 'hello mqtt'

# 简单测试订阅。

mosquitto_sub -h localhost -t mqtt-test

# 发布设置用户密码 -u user -P password

mosquitto_pub -u admin -P admin -h localhost -t mqtt/loop/message -m 'test mqtt'

mosquitto_sub -u admin -P admin -h localhost -t mqtt/loop/message

# 指定发布clientid -i (id to use for this client)

mosquitto_sub -u admin -P admin -i shuai-ubuntu-test -h localhost -t mqtt/loop/message

mosquitto_pub -u admin -P admin -i shuai-ubuntu-test-client -h localhost -t mqtt/loop/message -m 'test mqtt client'

查看broker的log

mosquitto的默认log 地址是:/var/log/mosquitto/xxx.log

tailf /var/log/mosquitto/mosquitto.log

构建Java-Mqtt-Server(Springboot + Mqtt)

requirement依赖

mosquitto broker

可以使用Eclipse公开的broker,据说底层也是mosquitto。地址为iot.eclipse.org

可以部署安装mosquitto(本文方案)

springboot (2.1.5.RELEASE)

Eclipse Paho

curl/postman

构建springboot项目

1. 使用idea springboot initializer 初始化springboot工程

使用springboot版本2.1.5.RELEASE

2. pom中添加

org.springframework.boot

spring-boot-starter-integration

org.springframework.integration

spring-integration-stream

org.springframework.integration

spring-integration-mqtt

org.projectlombok

lombok

1.16.10

provided

3. MQTT Configuration

配置broker地址,

端口号,

是否使用ssl,

用户名

密码

public abstract class MQTTConfig {

protected final String broker = "10.156.2.132";

protected final int qos = 2;

protected Boolean hasSSL = false; /* By default SSL is disabled */

protected Integer port = 1883; /* Default port */

protected final String userName = "admin";

protected final String password = "admin";

protected final String TCP = "tcp://";

protected final String SSL = "ssl://";

/**

* Custom Configuration

*

* @param broker

* @param port

* @param ssl

* @param withUserNamePass

*/

protected abstract void config(String broker, Integer port, Boolean ssl, Boolean withUserNamePass);

/**

* Default Configuration

*/

protected abstract void config();

}

4. Publisher推送

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值