mq消息消费,broker选址
阅读原文时间:2023年07月10日阅读:1

PullRequest.MessageQueue.BrokerName

根据PullRequest.MessageQueue得到brokerId,默认0或者用缓存中的suggest,每次消息拉取后会更新sugestBrokerId到缓存,

BorkerName+brokerId在缓存(brokerAddrTable)中找到broker的地址

PullRequest在每20s的重平衡加入,MessageQueue是从NameServer取得的topic的订阅信息中拿到

消息发送:

1.TopicPublishInfo.MessageQueue

2.MessageQueue.brokerName

3.private final ConcurrentMap> brokerAddrTable =

new ConcurrentHashMap>();

brokerAddrTable.get(brokerName).get(0)

看下发送时如何负载均衡的,可以看到如果发生重试(lastBrokerName 不为null)优先选上次失败的brokerName。否则逐个轮询