组件:
nameSrv作用:
1 | 1.加载kv配置、创建nettyServer网络处理对象、 |
NameSrv功能实现
1 | 1. 路由注册、故障剔除 |
Borker:
1 | 提供消息存储、 |
Producer启动流程
1 | 1. 检查producerGroup是否符合要求、改变生产者的instanceName为进程id |
消息发送过程
1 | 支持3种方式: 同步sync、异步async、单向oneway |
Consumer消息消费
1 | 集群模式: 同一topic下一条消息只能允许被其中一个消费者消费、消费进度保存在broker端 |
消费者启动流程
1 | 1. 构建订阅主题信息SubscriptionData并加入到RebalanceImpl的订阅消息中、订阅关系来自: |
消息可用性保障
1 | 1. Broker 正常关机 |
消息延迟
1 | 在正常不发生消息堆积的情况下、以长轮询方式实现准实时消息推送 |
消息堆积
1 | rocketmq消息存储使用磁盘文件(内存映射)并且在物理布局上为多个大小相等的文件组成逻辑文件组、可无限循环使用、提供消息过期机制、默认保留3天 |
消息过滤:
1 | 1. broker端过滤、 |
msg status 说明:
1 | SEND_OK, // 发送成功 |
疑问
1 | 1. broker收到消息会先写commitlog、为什么producer发消息的时候会选择一个Queue去发 ?而不是broker ?再由broker分发到Queue ? |