更新时间:2023-03-13 GMT+08:00

什么是分布式消息服务RocketMQ版

分布式消息服务RocketMQ版是一个低延迟、弹性高可靠、高吞吐、动态扩展、便捷多样的消息中间件服务。

分布式消息服务RocketMQ版具有如下特点:

  • 兼容开源RocketMQ客户端。
  • 提供顺序、延迟、定时、重投、死信、事务消息等功能,更好的适配电商、金融等多样的业务场景。
  • 提供消息追踪、消息溯源、链路诊断、死信导出、监控告警等能力,帮助您全方面的了解服务状况,保证业务正常运行。

产品架构

图1 产品架构示意图

示意图说明:

  • Broker:负责接收和存储Producer发送的消息,或者转发消息到Consumer。一个Broker由一个主节点和两个备节点组成。
  • NameServer:负责接收和存储Broker中的元数据。
  • Producer:从NameServer获取元数据,然后将消息发送到Broker。
  • Consumer:从NameServer获取元数据,然后从Broker拉取消息。

支持的消息类型

分布式消息服务RocketMQ版支持4种消息类型。

  • 普通消息:没有特殊功能的消息,区别于延迟消息、顺序消息和事务消息。
  • 延迟消息/定时消息:生产者生产消息到分布式消息服务RocketMQ版后,消息不会立即被消费,而是延迟到特定时间后才会发送给消费者进行消费。
  • 顺序消息:消费者按照消息发送的顺序来消费消息。
  • 事务消息:提供类似X/Open XA的分布事务功能,通过事务消息能达到分布式事务的最终一致。

支持的高级特性

分布式消息服务RocketMQ版支持4种高级特性。

  • 消息过滤:消费者根据分布式消息服务RocketMQ版设置的标签对已订阅Topic中的消息进行过滤,达到只消费需要的消息的目的。
  • 消息重试:消费者消费某条消息失败后,分布式消息服务RocketMQ版根据重试机制将消息重新发送给消费者进行消费。如果重试次数到达设定的最大值时,消息尚未被成功消费,此消息将被发送到死信队列。

    分布式消息服务RocketMQ版的重试机制如表1所示。

    表1 消息重试机制

    消费类型

    重试时间间隔

    最大重试次数

    顺序消费

    通过suspendTimeMillis设置重试时间间隔。

    默认值为1000ms,即1s。

    通过消费者的setMaxReconsumeTimes函数配置最大重试次数。若未设置参数值,默认为无限重试。

    普通消费

    重试时间间隔根据重试次数阶梯变化,如表2所示。

    创建消费组时设置。

    取值范围:1-16。

    表2 普通消费重试时间间隔

    重试次数

    与上次的间隔时间

    重试次数

    与上次的间隔时间

    1

    10s

    9

    7min

    2

    30s

    10

    8min

    3

    1min

    11

    9min

    4

    2min

    12

    10min

    5

    3min

    13

    20min

    6

    4min

    14

    30min

    7

    5min

    15

    1h

    8

    6min

    16

    2h

  • 延时消息:生产者生产消息到分布式消息服务RocketMQ版后,消息不会立即被消费,而是延迟固定时间后才会发送给消费者进行消费。生产者可以指定18个延时等级,每个延时等级对应的时间如表3所示。
    表3 延时等级

    延时等级

    延时时间

    延时等级

    延时时间

    1

    1s

    10

    6min

    2

    5s

    11

    7min

    3

    10s

    12

    8min

    4

    30s

    13

    9min

    5

    1min

    14

    10min

    6

    2min

    15

    20min

    7

    3min

    16

    30min

    8

    4min

    17

    1h

    9

    5min

    18

    2h

  • 定时消息:生产者生产消息到分布式消息服务RocketMQ版后,消息不会立即被消费,而是延迟到设定的时间点后才会发送给消费者进行消费。分布式消息服务RocketMQ版支持任意时间的定时消息,最大推迟时间可达到1年。同时也支持定时消息的取消。