简介
源码: https://github.com/apache/rocketmq
官网: https://rocketmq.apache.org
中文文档: https://github.com/apache/rocketmq/tree/master/docs/cn
版本: 4.8
项目模块
用idea的analyze module dependencies功能整理出依赖顺序,也是阅读顺序
- logging, 本地日志模块
- remoting, 通信模块
- common, 工具类
- srvutil, 命令行交互工具类
- acl, 网络控制工具
- client, 客户端代码
- filter, 过滤器解析代码
- logappender, 对几种日志框架的适配
- store, 落盘逻辑
- tools, 监控工具
- openmessaging, open-message协议实现
- broker, broker代码
- namesrv, 路由注册中心
本地日志模块
Log4j的最精简fork
Appender -> Logger(AppenderPipeline)
实现了RollingFileAppender
等多种appender,用到writer和buffer
SysLogger
即标准输入输出兜底
tips
获取当前系统的行分隔符
1 | System.getProperty("line.separator") |
finalize
jvm回收该对象时执行,用来释放一些手动申请的资源
大量对象同时执行finalize可能引起执行队列堆积
Java9开始被java.lang.ref.Cleaner和java.lang.ref.PhantomReference代替
工厂模式
product
- InternalLogger
concreate products
- InnerLogger
- Slf4jLogger
creator
- InternalLoggerFactory
concreate creators
- InnerLoggerFactory
- Slf4jLoggerFactory
creator给concreate creators提供注册方法,给用户提供生产方法