RocketMQ(二)——TopicPublicInfo
来源:互联网 发布:金天鹅软件 编辑:程序博客网 时间:2024/06/06 13:20
Producer发送消息是如何得知发到哪个broker的 ?
每个应用在收发消息之前,一般会调用一次producer.start()/consumer.start(),幕后的工作就是:创建需要的实例对象,如MQClientInstance;设置定时任务,如从Nameserver中定时更新本地的Topic route info,发送心跳信息到所有的broker,动态调整线程池的大小,等等;把当前producer加入到指定的组中。客户端会缓存路由信息TopicPublishInfo, 同时定期从NameServer取Topic路由信息,每个Broker与NameServer集群中的所有节点建立长连接,定时注册Topic信息到所有的NameServer。Producer在发送消息的时候会去查询本地的topicPublishInfoTable(一个HashMap),如果没有命中的话就会与NameServer沟通得到路由信息,RequestCode=GET_ROUTEINTO_BY_TOPIC 如果nameserver中也木有查询到,那么将会发送一个default的topic进行路由查询。,如图所示:
Producer发送消息的具体过程,以同步模式为例。
得到了通信地址,发送过程就显而易见了。可以看到在选择消息队列进行发送时采用随机方式,同时和上一次发送的broker保持不同,防止热点
0 0
- RocketMQ(二)——TopicPublicInfo
- RocketMQ(二)——集群部署
- rocketmq——HelloWorld
- RocketMQ——Broker篇
- RocketMQ——其他注意事项
- RocketMQ——顺序消息
- RocketMQ原理——NameServer
- 《RocketMq》二、存储篇
- RocketMQ是什么(二)
- Rocketmq-producer启动(二)
- RocketMQ实战(二)
- RocketMQ实战(二)
- RocketMQ实战(二)
- RocketMQ实战(二)
- RocketMQ(二)
- RocketMQ实战(二)
- RocketMQ实战(二)
- RocketMQ(一)——简介
- Android :利用Proguard去除日志信息
- Quartz2D-图形上下文栈
- ios9 jsonkit crash更新xcode7后原来的jsonkit崩溃
- 私有点播cdn切换前-测试总结
- 网络安全书籍推荐
- RocketMQ(二)——TopicPublicInfo
- Caused by: java.lang.SecurityException: Unable to find app for caller android.app.ApplicationThreadP
- 使用canvas 将img 的url 转换为base64格式
- 【ListView】三行搞定你的Adapter,和几十行的getview Say goodBye
- Xcode插件管理工具Alcatraz
- 第四周项目二数据结构之自建算法库——单链表
- php连接mongoDB的几个问题
- leetcode Longest Palindromic Substring
- ewebeditor上传文件大小及在线编辑器jsp版使用心得