rocketmq
文章平均质量分 71
孤海岛主
这个作者很懒,什么都没留下…
展开
-
RocketMq源码解析-CommitLog
CommitLog.asyncPutMessages: 1.记录消息存储到broker的时间 2.存储耗时相关信息,收集这些指标,上报给监控系统 3.处理延时消息(定时消息) 4.加锁 putMessage会有多个线程并行处理,需要上锁,可以再broker中配置是重入锁还是自旋锁userRetreenLockWhenputmessage,默认是false使用自旋锁,异步刷盘建议使用自旋锁,同步刷盘建议使用重入锁 5.获取最近一个commitLog文件的内容映射文件(.原创 2022-03-23 16:19:48 · 208 阅读 · 0 评论 -
RocketMq源码解析-Consumer
Consumer源码解析:DefaultMQPushConsumer.start(): 1:设置消费者组 2:启动消费者this.defaultMQPushConsumerImpl.start(); DefaultMQPushConsumerImpl.strat()(同步方法): 1:判断服务状态 只有 服务状态为 CREATE_JUST 时,才启动 Consumer 2:防止启动多个 Consumer,先把 服务状态修改为.原创 2022-03-23 16:18:20 · 359 阅读 · 0 评论 -
RocketMq源码解析-Producer发送消息
Producer发送消息源码分析:producer.send(msg); 1.消息检查Validators.checkMessage(msg, this); 1.消息不能为null 2.topic检查不能为null,不能为非法字符,长度不能为0,topic长度不能大于127 3.topic是否为允许发送的topic 4.body检查,不能为null,长度不能为0,不能大于消息限制长度4M 2.设置topic(如果有命名空间则.原创 2022-03-23 16:17:18 · 2618 阅读 · 0 评论 -
RocketMq源码解析-Producer启动
Producer启动源码分析:DefaultMQProducer.start(); 1.启动生产者DefaultMQProducerImpl.start()(同步方法) 1:判断服务状态 只有 服务状态为 CREATE_JUST 时,才启动 Producer 2.防止启动多个 Producer,先把 服务状态修改为 START_FAILED 3. 检查 groupName 是否合法比如不能为空,是否符合正则 ^[%|a-zA-Z0-9_-]+$,并.原创 2022-03-23 16:16:18 · 456 阅读 · 0 评论 -
RocketMq源码分析-Broker
Broker源码解析:启动流程:BrokerStartup main(): start(BrokerController controller=createBrokerController(args)): createBrokerController: 1:是否指定了netty通信时缓冲区的大小,若未指定初始化为128K 2:解析命令行参数,加载-C参数文件中指定的配置信息,防止丢失这里记录.原创 2022-03-23 16:14:40 · 2280 阅读 · 0 评论 -
RocketMq源码解析-Namesrv
Namesrv源码分析BrokerConfig,用来封装其绝大多数基本配置信息NettyServerConfig,封装了其作为对外暴露的消息队列服务器的信息NettyClientConfig,则封装了其作为NameServer客户端的信息NamesrvStartup: main(): main0(): start(NamesrvController controller=createNamesrvController()): 1.原创 2022-03-23 16:13:33 · 1254 阅读 · 0 评论