MQTT——EMQX学习笔记05——共享订阅、延迟发布

一、共享订阅

注意:共享订阅是在订阅时设置topic的名字,延迟发布是在发布时设置topic的名字

(一)什么是共享订阅

EMQX的共享订阅跟RockerMQ里面的集群消费一样,是以集群为单位只消费一次消息。【RockerMQ 有两种消费模式一种是集群消费(以集群为单位进行消费)、一种是广播消费(以节点进行消费)。EMQX中默认是广播消费,也就是订阅了同一个主题的客户端都会消费每一条发布的消息】

EMQX中是支持共享订阅的(注意:共享订阅是MQTT协议中的一种订阅方式,也就是共享订阅不是EMQX特有的)。
共享订阅也就是只要属于同一个集群,那么当有消息发布时,这个集群中只有一个节点会收到消息,也就是以集群为单位只被消费一次。

(二)怎么实现共享订阅

其实很简单,在MQTT中是通过topic的名字进行区分的,只要topic的名字以$ share/GroupName/topicName或者$ queue/ 为前缀。那么就是共享订阅。可以 参考官网
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

(三)使用MQTTX客户端测试

MQTTX安装很简单,百度MQTTX下载直接安装即可。

  1. 开两个客户端订阅同一个主题
    在这里插入图片描述
  2. 订阅客户端01
    在这里插入图片描述
  3. 同上面一样创建客户端02
    在这里插入图片描述
  4. 分别给两个订阅的客户端添加一个订阅主题
    在这里插入图片描述
# 这里的$share表示这个订阅为共享订阅,abc为分组名称(集群名称)t/1 为真正的topic名称
$share/abc/t/1
  1. 新建一个客户端【发布-01】使用它发布一条主题为t/1的消息
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(四)负载均衡策略

涉及到了集群那么就会有负载均衡的存在。EMQX为我们提供了几种负载均衡策略
在这里插入图片描述
更改也很简单直接在配置文件中修改即可。

二、延迟发布

延迟发布类似与Rocker MQ里面的延迟消息。这个实现起来也很简单,也是通过topic前缀设置。(注意:他是在发布消息时设置的)

注意:此功能由 emqx-delay-publish 插件提供,该插件默认关闭,需要开启插件后才能使用此功能。
在这里插入图片描述

延迟发布主题的具体格式如下:
$delayed/{DelayInterval}/{TopicName}
1. $delayed : 使用 $delayed 作为主题前缀的消息都将被视为需要延迟发布的消息。延迟间隔由下一主题 层级中的内容决定。
2. {DelayInterval} : 指定该 MQTT 消息延迟发布的时间间隔,单位是秒,允许的最大间隔是 4294967 秒。如果 {DelayInterval} 无法被解析为一个整型数字,EMQ X 将丢弃该消息,客户端不会收到任何信 息。
3. {TopicName} : MQTT 消息的主题名称。
例如: - $delayed/15/x/y : 15 秒后将 MQTT 消息发布到主题 x/y 。
- $delayed/60/a/b : 1 分钟后将 MQTT 消息发布到 a/b 。
- $delayed/3600/$SYS/topic : 1 小时后将 MQTT 消息发布到 $SYS/topic 。

在这里插入图片描述

  • 14
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值