Feature List - jacarrichan/RocketMQ GitHub Wiki
RocketMQ所有Feature,目的在于方便测试人员制定详细的测试用例
发送消息
- 发送普通消息
- 发送普通顺序消息
- 发送严格顺序消息
- 发送定时消息
- 发送事务消息(正常提交回滚与异常Check)
- 发送消息自动创建Topic
- 通过客户端API创建Topic
- 发送普通消息失败后自动重试下一个Broker,最多重试5次
- 发送消息API支持三种通信方式(同步、异步、Oneway)
订阅消息
- 乱序方式订阅消息
- 顺序方式订阅消息
- 事务方式消费消息
- 表达式过滤消息
- 广播方式消费
- 集群方式消费
- 负载均衡实时性
- 订阅关系支持运行时动态变化
- 消息消费失败,发回Broker端,延时重试
- 单队列并行消费
- Consumer可自由选择从哪个消费进度开始消费
- Consumer可自由选择从Master还是Slave消费
- Pull方式自由拉消息
- 订阅消息低延时,不堆积情况下可保证延时在10ms以内或左右(长轮询)
- 消息堆积到一定阀值,自动转移到Slave消费
客户端相关
- 单机可以启动多个JVM,需要指定不同的实例名
- 通过在代码里指定instanceName
- 通过在Java启动参数中指定-Drocketmq.client.name=
- 客户端提供四种寻址方式(发现Name Server地址的方式)
- 通过在代码里指定Name Server地址
- 通过在Java启动参数中指定-Drocketmq.namesrv.addr=
- 通过设置环境变量NAMESRV_ADDR
分布式事务
- 保证本地事务与发消息同时成功或同时失败(即使发生Producer、Broker Crash)
- Broker已经Check过的事务消息,如果Producer已经执行了提交或者回滚操作,则不再Check
- Broker已经Check过的事务消息,如果Producer Check过程异常或者返回Unknow,则Broker要重新Check
消息查询
- 根据消息ID查询消息
- 根据消息Key查询消息
- 消息设置多个Key,每个Key都能独立查询
- 事务消息设置Key,可以通过Key来跟踪消息提交回滚状况
服务端消息过滤
消息回溯
命令行管控工具
- 查看消费进度
- 增删改查Topic配置
- 修改Broker参数配置
- 查看Topic消息统计
Broker存储相关
- Broker正常退出,重启恢复数据
- Broker异常退出(掉电、kill -9),重启恢复数据
- Broker事务存储正常退出恢复
- Broker事务存储异常退出恢复
- Broker定时消息存储正常、异常退出恢复
- Transaction State Table文件清理定时清理功能
- Transaction Redo Log文件清理功能
- Transaction State Table定时Check功能
- 同步刷盘
- 异步刷盘
同步双写
- 同步双写模式下,只要向用户返回成功,则消息一定写入Master和Slave
- 即使Slave Downtime,单个Master也能正常工作,此时向用户返回消息写入Master成功,Slave失败
- 写入Slave失败时,客户端可以通过配置一个参数,重新发送消息到另一对Broker
- Master运行一段时间,此时启动Slave,确保所有队列的Offset都与Master一致
异步复制
- Slave所有队列起始Offset都与Master完全一致
主备相关
- Master支持监听不同网卡(正常消息传输与备机同步数据分开)
- 备机启动后能通过Name Server找到Master地址
- 备机能正确同步Master Topic配置
- 备机能正确同步定时消息进度
- 备机能正确同步Consumer消费进度
- Consumer消费消息堆积情况下,能自动切换到备机消费
- 备机切换为主机后,事务消息、延时消息、普通消息、消费进度等功能都正常
Name Server相关
Remoting通信层
- 客户端定时发送心跳,服务器检测某个连接超过一定时间没有操作,就自动关闭连接,并清理对应的注册信息