美文网首页
EMQX用户指南-共享订阅

EMQX用户指南-共享订阅

作者: DrinkwaterGor | 来源:发表于2021-04-09 10:38 被阅读0次

    共享订阅

    共享订阅是在多个订阅者之间实现负载均衡的订阅方式:

                                                       [subscriber1] got msg1
                 msg1, msg2, msg3                    /
    [publisher]  ---------------->  "$share/g/topic"  -- [subscriber2] got msg2
                                                     \
                                                       [subscriber3] got msg3
    
    

    上图中,共享 3 个 subscriber 用共享订阅的方式订阅了同一个主题 share/g/topic,其中topic 是它们订阅的真实主题名,而share/g/ 是共享订阅前缀。EMQ X 支持两种格式的共享订阅前缀:

    类型 格式 示例 说明
    带群组的共享订阅 $share/<group-name>/真实主题 $share/abc/t/1 真实发布主题是t/1, 群组名为abc, 多个订阅$share/abc/t/1的客户端, 一个消息发布时只有一个客户端能收到
    不带群组的共享订阅 $queue/真实主题 $queue/t/1 queue/ 为前缀的共享订阅是不带群组的共享订阅。它是share 订阅的一种特例,相当与所有订阅者都在一个订阅组里面

    带群组的共享订阅:

                                           [s1]
               msg1                      /
    [emqx]  ------>  "$share/g1/topic"    - [s2] got msg1
             |                           \
             |                             [s3]
             | msg1
              ---->  "$share/g2/topic"   --  [s4]
                                         \
                                          [s5] got msg1
    
    例如,假设订阅者 s1,s2,s3 属于群组 g1,订阅者 s4,s5 属于群组 g2。那么当 EMQ X 向这个主题发布消息 msg1 的时候:
    
        EMQ X 会向两个群组 g1 和 g2 同时发送 msg1
    
        s1,s2,s3 中只有一个会收到 msg1
    
        s4,s5 中只有一个会收到 msg1
    
    

    不带群组的共享订阅:

                                           [s1] got msg1
            msg1,msg2,msg3               /
    [emqx]  --------------->  "$queue/topic" - [s2] got msg2
                                         \
                                           [s3] got msg3
    
    

    均衡策略与派发 Ack 配置

    EMQ X 的共享订阅支持均衡策略与派发 Ack 配置, 可以在emqx.conf文件中配置

    # etc/emqx.conf
    
    # 均衡策略
    broker.shared_subscription_strategy = random
    
    # 适用于 QoS1 QoS2 消息,启用时在其中一个组离线时,将派发给另一个组
    broker.shared_dispatch_ack_enabled = false
    
    
    均衡策略 说明
    random 在所有订阅者中随机选择
    round_robin 按照订阅顺序
    sticky 一直发往上次选取的订阅者
    hash 按照发布者 ClientID 的哈希值

    相关文章

      网友评论

          本文标题:EMQX用户指南-共享订阅

          本文链接:https://www.haomeiwen.com/subject/lgkikltx.html