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通信层

  • 客户端定时发送心跳,服务器检测某个连接超过一定时间没有操作,就自动关闭连接,并清理对应的注册信息