会员
周边
新闻
博问
闪存
众包
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
notlate
管理
随笔分类 -
rocketmq
rocketmq的broker恢复commit-log的时候如何恢复consumeQueue、indexfile
摘要:如果一个broker正常退出,是会删除abort文件的。那么启动broker的时候发现abort文件还存在,那么说明上次是异常终止,会进入到commit-log的recoverAbnormally逻辑里面,因为所有其他的信息都是从commit-log获取到的,所以追根溯源只能从commit-log开
阅读全文
posted @
2019-12-08 22:28
notlate
阅读(1051)
评论(3)
推荐(0)
rocketmq的broker接收消息的时候,如何更新consumeQueue和indexfile的
摘要:首先解释下consumeQueue,由于commit-log是根据消息先后存储的,而我们消费的时候是根据topic来筛选的,所以需要一个队列根据topic来划分,所以consumeQueue就是干这个事情的。而indexfile顾名思义就是索引文件,用来做单纯查询的。 private final C
阅读全文
posted @
2019-12-08 22:25
notlate
阅读(653)
评论(1)
推荐(0)
rocketmq里面生产者发送一次消息以后commit-log做了哪些事情
摘要:生产者发送一条消息的时候,在主broker里面最终会运行到: PutMessageResult result = this.commitLog.putMessage(msg); 在这里第一次有了锁,也就是发送一条消息,一路行都没有锁,直到这里涉及mappedfile的时候才有锁。因为要保证消息有序性
阅读全文
posted @
2019-12-08 21:09
notlate
阅读(843)
评论(0)
推荐(0)
rocketmq如何新增topic
摘要:新增topic是需要客户端直接通知broker完成的: 通过createAndUpdateTopicConfig方法 发送给broker以后,在AdminBrokerProcessor里面负责处理这个类型消息: 在updateTopicConfig方法: TopicConfig是复写了equal方法
阅读全文
posted @
2019-12-08 20:21
notlate
阅读(8321)
评论(0)
推荐(0)
rocketmq怎么做序列化的?
摘要:首先看一下RemotingCommand的几个重要属性: 除了static之外,还有body、extfields是transitent,除此之外都是要直接进行序列化的,默认用fastjson直接序列化。 这里面的extfields跟customHeader是互相转换的,也就是序列化的时候用前者传入,
阅读全文
posted @
2019-12-08 20:15
notlate
阅读(3148)
评论(0)
推荐(0)
rocketmq的同步发送、oneway发送、异步发送怎么做的?
摘要:在sendDefaultImpl方法里面: 如果是同步的话,必须发送成功,还必须返回是ok才认为成功,否则继续重试。 如果是oneway、异步的话,直接return null出去了,那么异步如何做重试? 上面代码最核心的发送函数就是sendKernelImpl 可以看到,对于异步模式和非异步模式,s
阅读全文
posted @
2019-10-01 21:42
notlate
阅读(3535)
评论(0)
推荐(0)
rocketmq发送消息的期间的broker选择
摘要:这里的selectOneMessageQueue的其实内部调用MQFaultStrategy内部对象的selectOneMessageQueue: 我个人看来,这个估算功能倒不是特别重要,所以mq默认是不使用这个逻辑,不过这个不妨碍我们研究下。下面是MQFaultStrategy的selectOne
阅读全文
posted @
2019-10-01 19:14
notlate
阅读(2451)
评论(0)
推荐(0)
rocketmq的message里面的路由信息是啥
摘要:对于一个生产者来说,在进行sendmessage的时候,需要知道这个topic应该发给哪个broker。如果没有路由信息的话,需要取注册中心,通过GET_ROUTEINTO_BY_TOPIC去注册中心拿到消息。 介绍下面具体流程之前,还是先介绍注册额中心里面路由管理者RouteInfoManager
阅读全文
posted @
2019-01-27 16:44
notlate
阅读(1430)
评论(0)
推荐(0)
rocketmq的broker如何同步信息的?
摘要:一个haservice下面有accpet和haclient分别对应客户端和服务端,grouptranserservie用来控制消息是否获取到,下面具体讲。 拿haclient举例子,在主线程做的事情 也就是在rocketmq里面,一个具体的任务就是单独分配一个线程,从而发挥多线程优势,在主线程上面休
阅读全文
posted @
2019-01-27 14:22
notlate
阅读(1779)
评论(0)
推荐(0)