1、EMQ X支持持久化订阅
首先理解下,什么是持久化订阅?持久化订阅指的是,消费端无论是否在线,只要其持久化订阅了某个Topic,消费端就总会收到发送到此Topic上的消息,类似ActiveMQ中的持久化订阅。
2、持久化订阅使用方式,从以下客户端举例:
1> 以mosquitto客户端为例,
通过参数[-c]起作用,注意[-c]需要和[-i]结合使用
>mosquitto_sub -h 172.17.6.147 -t YourComTm/01012345678 -c -i "can_do@2019" -q 2 -u can_do -P passw0rd -d
Client can_do@2019 sending CONNECT
Client can_do@2019 received CONNACK (0)
Client can_do@2019 sending SUBSCRIBE (Mid: 1, Topic: YourComTm/01012345678, QoS: 2, Options: 0x00)
Client can_do@2019 received PUBLISH (d0, q2, r0, m4, 'YourComTm/01012345678', ... (16 bytes))
Client can_do@2019 sending PUBREC (m4, rc0)
Client can_do@2019 received SUBACK
Subscribed (mid: 1): 2
Client can_do@2019 received PUBLISH (d0, q2, r1, m5, 'YourComTm/01012345678', ... (16 bytes))
Client can_do@2019 sending PUBREC (m5, rc0)
Client can_do@2019 received PUBREL (Mid: 4)
Client can_do@2019 sending PUBCOMP (m4)
hello can_do 994
Client can_do@2019 received PUBREL (Mid: 5)
Client can_do@2019 sending PUBCOMP (m5)
hello can_do 994
2> Java客户端mqtt-client中实现持久化订阅,
关键代码行:
mqtt.setClientId(this.clientId);
mqtt.setCleanSession(false);
public TestMqttClientSubMsgInFuture(String paramBrokerHost, int paramBrokerPort, String paramUserName,
String paramPassword, String paramTopicName, String paramClientId) {
this.brokerHost = paramBrokerHost;
this.brokerPort = paramBrokerPort;
this.username = paramUserName;
this.password = paramPassword;
this.topicName = paramTopicName;
this.clientId = paramClientId;
MQTT mqtt = new MQTT();
try {
// set clientId and cleanSessionFlag in mqtt object
mqtt.setHost(this.brokerHost, this.brokerPort);
mqtt.setUserName(this.username);
mqtt.setPassword(this.password);
mqtt.setClientId(this.clientId);
mqtt.setCleanSession(false);
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
connection = mqtt.futureConnection();
try {
connection.connect();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
connection.subscribe(new Topic[] { new Topic(this.topicName, QoS.EXACTLY_ONCE) });
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
3、注意事项:
1> 在EMQX中,session是通过clientId标识的,因此clientId在集群全局中要保持唯一性,否则,可能消费不了消息,或者消费消息不是预期效果。
【温馨提示】
如果您觉得满意,可以选择支持下,您的支持是我最大的动力:
分享到:
相关推荐
EMQX-MQTT客户端,是比较好用的一个MQTT客户端。 https://mqttx.app/cn/ 这里提供一个v1.3.4版本安装包,如果有条件的还是推荐去官网下载
1、连接EMQX MQTT平台,主动上报本地数据到平台端,使用MQTT协议通讯。 2、接收平台端下发的数据或者指令。 3、上传继电器状态,并接收平台下发指令。 4、代码使用KEIL开发,当前在STM32F103C8T6运行,如果是STM32...
EMQ的MQTT客户端
emqx MQTT工具,简单好用, MQTT工具针对emqx,自己编写的,很好用的,emqx 最简单好用的MQTT工具,特别是对emqx支持
MQTT介绍文档,服务器(EMQ X)搭建,客户端(mqtt-spy,安卓)使用,java编程示例
Python课程设计,使用emqx作为mqtt服务器,esp82666为下位,pyq5为机界面的温度可视化工具
1、连接EMQX MQTT平台,主动上报本地数据到平台端,使用MQTT协议通讯。 2、接收平台端下发的数据或者指令。 3、多路继电器状态及控制。 4、代码使用KEIL开发,当前在STM32F103C8T6运行,如果是STM32F103其他型号芯片...
k8s 搭建emqx mqtt 配置文件
1、连接EMQX MQTT平台,主动上报本地数据到平台端,使用MQTT协议通讯。 2、接收平台端下发的数据或者指令。 3、多路继电器+温湿度DHT12。 4、代码使用KEIL开发,当前在STM32F103C8T6运行,如果是STM32F103其他型号...
EMQ是基于高并发的Erlang/OTP语言平台设计,支持百万级连接和分布式集群,发布订阅模式的开源MQTT消息服务器 完整支持MQTT V3.1/V3.1.1协议规范,扩展支持WebSocket、Stomp、CoAP、MQTT-SN或私有TCP协议
1、连接EMQX MQTT平台,主动上报本地数据到平台端,使用MQTT协议通讯。 2、接收平台端下发的数据或者指令。 3、多路继电器状态及控制。 4、代码使用KEIL开发,当前在STM32F103C8T6运行,如果是STM32F103其他型号芯片...
EMQX 5.0 单集群支持 MQTT 并发连接数高达 1 亿条,单服务器的传输与处理吞吐量可达每秒百万级 MQTT 消息,并保证延迟在亚毫秒级。 EMQX 支持多种协议,包括 MQTT (3.1、3.1.1 和 5.0)、HTTP、QUIC 和 WebSocket 等...
EMQX 作为物联网应用开发和物联网平台搭建必须用到的基础设施软件,主要在边缘和云端实现物联网设备互联与设备上云,提供物联网设备接入、协议处理、消息路由、数据存储、流数据处理等核心能力。其特性如下: 物联网...
个人备注:可作为mqtt消息服务器使用,只想模拟客户端的 不建议使用该工具,可用mqttfx模拟终端发送消息; 大规模分布式物联网 MQTT 消息服务器 高效可靠连接海量物联网设备,实时处理分发消息与事件流数据,助力...
百万级开源MQTT消息服务器
1、连接EMQX MQTT平台,主动上报本地数据到平台端,使用MQTT协议通讯。 2、接收平台端下发的数据或者指令。 3、继电器状态及控制。 4、代码使用KEIL开发,当前在STM32F103C8T6运行,如果是STM32F103其他型号芯片,...
1、连接EMQX MQTT平台,主动上报本地数据到平台端,使用MQTT协议通讯。 2、接收平台端下发的数据或者指令。 3、多路继电器+温湿度DHT12。 4、代码使用KEIL开发,当前在STM32F103C8T6运行,如果是STM32F103其他型号...
(ESP8266代码)一种基于Wemos(ESP8266)将数据通过MQTT上传至EMQX服务器并转存到MySQL的方法
emqx-windows-4.3.8.zip mqtt 客户端软件 windows版本 mqtt 客户端软件 windows版本 emqx-windows-4.3.8.zip emqx-windows-4.3.8.zip emqx-windows-4.3.8.zip emqx-windows-4.3.8.zip emqx-windows-4.3.8.zip emqx-...
可用于自我搭建MQTT服务器,最新版压缩包,免安装,直接解压就能使用