1、使用 docker 命令安装 EMQX
这里以 EMQX 企业版 4.4.14 为例
-
获取 Docker 镜像
docker pull emqx/emqx-ee:4.4.14
-
启动 Docker 容器
docker run -d --name emqx-ee -p 1883:1883 -p 8081:8081 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx-ee:4.4.14
2、整合 MQTT
-
引入 依赖
<!--mqtt--> <dependency> <groupId>org.springframework.integration</groupId> <artifactId>spring-integration-mqtt</artifactId> <version>5.5.14</version> </dependency>
-
定义配置文件 application.yml
spring: # MQTT配置信息 mqtt: # MQTT服务地址,端口号默认1883,如果有多个,用逗号隔开 url: tcp://192.168.40.138:1883 # 用户名 username: test # 密码 password: 123456 # 客户端id(不能重复) client-id: local-client # 超时时间(单位秒) timeout: 60 # 心跳(单位秒)表示服务器每隔1.5*20秒的时间向客户端发送心跳判断客户端是否在线 keep-alive: 20 # 消息服务质量等级(0:最多传递一次,1:至少传递一次,2:仅传递一次) qos: 1 # MQTT默认的消息推送主题,实际可在调用接口时指定 default-topic: topic
参数设置详情参考官方文档 :https://www.emqx.com/zh/blog/how-to-set-parameters-when-establishing-an-mqtt-connection
-
定义配置类 MqttConfig.java
import com.boyia.mqttdemo.mqtt.callback.OnMessageCallback; import org.eclipse.paho.client.mqttv3.MqttClient; import org.eclipse.paho.client.mqttv3.MqttConnectOptions; import org.eclipse.paho.client.mqttv3.MqttException; import org.eclipse.paho.client.mqttv3.MqttMessage; import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; import org.springframework.beans.factory