# 消息类型

URocketMQ支持普通、分区顺序、全局顺序、事务、定时等多种消息类型，针对每种类型消息生产/消费代码可能有所差异，建议不要混用。

## 普通消息

通用无特殊设置消息，性能最高。

## 分区顺序消息

利用用户提供的 Sharding Key 进行分区，同一个分区内的消息按照严格的 FIFO顺序进行发布和消费。

## 全局顺序消息

所有消息保证FIFO生产和消费，实际为一个队列，性能最低。

## 事务消息

事务消息提供类似 X/Open XA 的分布事务功能，要么同时成功，要么同时失败，通过事务消息能达到分布式事务的最终一致。

## 定时/延时消息

在开源RocketMQ支持固定梯度延时消息同时，URocketMQ自研支持任意秒级定时/延时消息。

### 固定梯度延迟消息

开源RocketMQ支持固定梯度的延迟消息，消息发送到之后，不会立即被消费，等待特定时间投递给真正的topic，默认配置“1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h” 18个级别，每个级别对应不同的延时时间，比如1对应1s，5对应1m，具体如下:


| 延迟等级 | 延迟时间 |
| -------- | -------- |
| 1        | 1s       |
| 2        | 5s       |
| 3        | 10s      |
| 4        | 30s      |
| 5        | 1m       |
| 6        | 2m       |
| 7        | 3m       |
| 8        | 4m       |
| 9        | 5m       |
| 10       | 6m       |
| 11       | 7m       |
| 12       | 8m       |
| 13       | 9m       |
| 14       | 10m      |
| 15       | 20m      |
| 16       | 30m      |
| 17       | 1h       |
| 18       | 2h       |

### 任意秒级延迟消息

URocketMQ自研支持任意秒级延迟消息，用户可自定义定时或者延迟至未来任意一秒发送消息。

说明：
1. 定时消息的精度会有1s~2s的延迟误差。
2. 默认支持2天以内自定义秒级延迟消息。
3. 同时设置固定梯度延迟与自定义延迟属性，仅生效固定梯度延迟。
4. 延迟时间超过支持范围（如默认2天），则以最大支持时间为准。
5. 实际时间戳以服务端时间为准，如果定时时间戳小于当前服务器时间戳则立即发送。
6. 2021年11月15日之前创建的实例会按批次进行升级以支持该特性，如实例未支持可联系客户经理进行实例升级。
