springboot接入emqx的mqtt

需求背景

物联网设备需要通过mqtt协议传输,这里记录一下,注意,这篇文章不能接入阿里云的mqtt,本人已经试过,会报错。

开发教程

1、EMQX安装部署

-- 1 安装必要的依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

-- 2 设置repo库
sudo yum-config-manager --add-repo https://repos.emqx.io/emqx-ce/redhat/centos/7/emqx-ce.repo

-- 3 yum安装emqx最新版本
sudo yum install emqx

-- 4 启动emqx
sudo emqx start

-- 5 查看emqx状态
sudo emqx_ctl status

-- 6 系统开机启动
sudo systemctl start emqx

-- 系统自带防火墙设置
-- 端口 端口对应的协议或者作用
-- 1883 MQTT protocol port
-- 8883 MQTT/SSL port
-- 8083 MQTT/WebSocket port
-- 8080 HTTP API port
-- 18083 Dashboard Management Console Port

-- 7 开放端口
sudo firewall-cmd --zone=public -
### 如何使用 Spring Boot 连接 EMQX MQTT Broker #### 导入 Maven 依赖 为了使 Spring Boot 应用程序能够与 EMQXMQTT broker 对话,需引入必要的库。这可以通过在 `pom.xml` 文件中添加如下所示的依赖项完成[^2]。 ```xml <dependencies> <!-- mqtt相关 --> <dependency> <groupId>org.springframework.integration</groupId> <artifactId>spring-integration-stream</artifactId> </dependency> <dependency> <groupId>org.springframework.integration</groupId> <artifactId>spring-integration-mqtt</artifactId> </dependency> </dependencies> ``` #### 配置 MQTT 客户端连接选项 创建一个用于存储 MQTT 连接参数的类,比如名为 `MqttConfig.java` 。在此文件内定义静态常量字符串表示服务器地址以及端口号,并设置其他必要属性如用户名密码等(如果适用),同时还可以利用 `MqttConnectOptions` 类来指定更多高级特性,例如遗嘱消息[^3]。 ```java import org.eclipse.paho.client.mqttv3.MqttClient; import org.eclipse.paho.client.mqttv3.MqttConnectOptions; public class MqttConfig { public static final String BROKER_URL = "tcp://broker.emqx.io:1883"; private static final String CLIENT_ID = "test_client"; public static void main(String[] args) throws Exception{ // 创建客户端实例并初始化 MqttClient client = new MqttClient(BROKER_URL, CLIENT_ID); // 设置连接选项 MqttConnectOptions options = new MqttConnectOptions(); options.setCleanSession(true); // 清理会话 // 设定遗嘱消息 (可选) options.setWill("will/topic", "client disconnected".getBytes(), 0, false); try { // 建立连接 client.connect(options); System.out.println("Connected to the broker."); // 断开前关闭资源 if (!client.isConnected()) { client.disconnect(); System.out.println("Disconnected from the broker."); } } catch(Exception e){ throw new RuntimeException(e.getMessage()); } } } ``` 上述代码片段展示了如何建立到 EMQX MQTT Broker 的基本连接过程,包括指定了当客户端意外断线时发送给特定主题的一条预设通知即所谓的“遗嘱”。 #### 启动应用程序测试连通性 确保所有配置无误之后编译运行此 Java 程序即可验证能否正常接入目标Broker服务。如果有任何异常情况发生,则应仔细检查网络状况或是认证凭证的有效性和准确性等问题所在之处。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

renkai721

谢谢您的打赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值