GitHub user francisoliverlee edited a comment on the discussion: RocketMQ 
5.x,当使用Proxy时消费者无法从slave节点拉取消息

使用remoting客户端是的。方法是: findBrokerAddressInSubscribe(), ```AI解释```如下:
流程说明:
1. 首先检查brokerName是否为空,如果为空则直接返回null
2. 检查brokerAddrTable中是否存在该brokerName,如果不存在或为空则返回null
3. 根据传入的brokerId查找对应的broker地址
4. 如果未找到且是slave,则尝试查找brokerId+1的地址
5. 如果仍未找到且不要求只查找该broker,则取第一个broker地址
6. 根据找到的broker地址判断是master还是slave
7. 返回FindBrokerResult对象,包含broker地址、是否slave和broker版本信息

这个方法主要用于在订阅场景下查找指定broker的地址,支持查找master和slave,并且可以根据brokerId精确查找或随机查找。

实现代码
https://github.com/apache/rocketmq/blob/2219fd8c1aee3bc42f6a66394e0e4cf131006a26/client/src/main/java/org/apache/rocketmq/client/impl/factory/MQClientInstance.java#L1153-L1188


GitHub link: 
https://github.com/apache/rocketmq/discussions/9261#discussioncomment-12545592

----
This is an automatically sent email for dev@rocketmq.apache.org.
To unsubscribe, please send an email to: dev-unsubscr...@rocketmq.apache.org

Reply via email to