1. 开放端口
EMQ X 默认提供 5 个 Listener,它们将占用以下端口:
端口 | 说明 |
---|---|
1883 | MQTT/TCP 协议端口 |
11883 | MQTT/TCP 协议内部端口,仅用于本机客户端连接 |
8883 | MQTT/SSL 协议端口 |
8083 | MQTT/WS 协议端口 |
8084 | MQTT/WSS 协议端口 |
云服务器可在安全组端口放行
或者输入一下命令开放相应端口号firewall-cmd --zone=public --add-port=1883-11883/tcp --permanent
//永久firewall-cmd --zone=public --add-port=1883-11883/tcp
//临时firewall-cmd --zone=public --add-port=1883/tcp --permanent
// 永久开放1883端口firewall-cmd --zone=public --remove-port=1883/tcp --permanent
//永久关闭1883端口firewall-cmd --reload
// 在不改变状态的条件下重新加载防火墙--配置立即生效
注:使用宝塔的小伙伴切记不要忘记宝塔那边也同样需要端口放行
2. 下载MqttSDK
MqttSDK下载链接:MqttSDK
下载并解压导入到idea中
核心抽象类:MessageHandler,用final修饰ServerMqttClient提高代码安全性。
3. 登录EMQ X 管理控制台
使用浏览器打开地址 http://服务器ip:18083 ,如需登录输入默认用户名admin
与默认密码 public
,登录进入 Dashboard
可以看到此时没有任何客户端连接上
4. 消息的发布订阅
执行main方法,再看Dashboard 客户端,此时可以看到有一个用户连接上来了【注:由于EMQ没有配置登录认证,匿名登录的话是所有用户都可以连接上来的】
在控制台点击WebSocket,订阅主题emq
,QoS(0:最多一次的传输 /1:至少一次的传输 /2:只有一次的传输),这里为了保证消息必达,我们选择QoS=2
修改代码:订阅的主题为java
,发布message的主题为emq
,执行main方法后同时在Dashboard
点击发布订阅,可以看到控制台打印的日志,以及控制台收到的主题消息
至此java连接EMQ,以及模拟主题消息的发布订阅就OK了!
【参考文档】EMQ官网链接:EMQ官网返回上一级
[Centos8.0-EMQ之搭建部署]:Centos8.0-EMQ之搭建部署返回下一级
[EMQ之数据持久化]
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。