mq消息消费,broker选址

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<String/* Broker Name */, HashMap<Long/* brokerId */, String/* address */>> brokerAddrTable =

new ConcurrentHashMap<String, HashMap<Long, String>>();

brokerAddrTable.get(brokerName).get(0)

 

 

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

 

 

 

 

posted @ 2020-08-01 20:22  l2c  阅读(250)  评论(0编辑  收藏  举报