配置两个客户端同时订阅共享主题 $share/test/my, 通过规则将消息重发布至主题 my。配置的共享策略为hash_clientid,但是为啥只有一个订阅者能够收到消息?这个hash_clientid是指根据谁的clientid来进行hash?如果是根据订阅者的clientid就没有办法起到负载的作用了。
想要达到的效果:
是发送者的 clientid。我们更新一下 Dashboard 上的描述。
通过规则消息重发布后该策略会失效掉,
走规则引擎之后,clientid 字段丢了,变成了 rule-id。可以理解为规则作为一个 client 发出了一条消息。所以 sender clientid 一直是 rule-id.
这中情况下,可能你只能用 local,random 或者 round_robin 策略。因为集群内做 round_robin 很费,未必能达成真正的轮询效果,建议用 random 或者 local.
使用 local 策略需要每个节点上都至少有一个订阅者连接,当前节点上的共享订阅消息只会投递到本节点上的订阅者。