EMQX中如何使用共享订阅(消费者集群) EMQXShared subscriptionconsumer groupsharerandom
程序员文章站
2022-07-13 09:37:52
...
1、首先,需要明确的是,EMQX支持共享订阅,或者称为消费者集群。
EMQ X支持共享订阅,类似Kafka的consumer_group,共享订阅同一个topic时,相当对该topic进行分发消费(消费者集群),而不是复制消费。
2、EMQX 服务端配置,
1> 开启共享订阅参数【true】
## Whether the Server supports Shared Subscriptions
##
## Value: boolean
# remedied by can_do on 2019-07-11
zone.external.shared_subscription = true
2> 配置订阅共享订阅策略
## - random
## - round_robin
## - sticky
## - hash
>>>broker.shared_subscription_strategy = random
>>>zone.external.shared_subscription = false
>>>broker.shared_dispatch_ack_enabled = false
3、共享订阅使用说明
1> pub端正常向指定topic发消息;
2> sub端需要配置成共享订阅方式,通过topic名称区分,即$share+<group_name>+topic,比如:$share/cnd/YourDeviceType/02012345678/+;
4、代码使用举例
EMQ X支持共享订阅,类似Kafka的consumer_group,共享订阅同一个topic时,相当对该topic进行分发消费(消费者集群),而不是复制消费。
2、EMQX 服务端配置,
1> 开启共享订阅参数【true】
## Whether the Server supports Shared Subscriptions
##
## Value: boolean
# remedied by can_do on 2019-07-11
zone.external.shared_subscription = true
2> 配置订阅共享订阅策略
## - random
## - round_robin
## - sticky
## - hash
>>>broker.shared_subscription_strategy = random
>>>zone.external.shared_subscription = false
>>>broker.shared_dispatch_ack_enabled = false
3、共享订阅使用说明
1> pub端正常向指定topic发消息;
2> sub端需要配置成共享订阅方式,通过topic名称区分,即$share+<group_name>+topic,比如:$share/cnd/YourDeviceType/02012345678/+;
4、代码使用举例
public static String generateTopic4TxtCmd2SInGroup() { StringBuffer sb = new StringBuffer(); sb.append("$share"); sb.append("/"); sb.append("cmd"); sb.append("/"); sb.append("YourDeviceType"); sb.append("/"); sb.append("+"); sb.append("/"); sb.append("S"); sb.append("/"); sb.append("T"); return sb.toString(); }