4.x和5.x版本差异及兼容性说明

更新时间:
复制 MD 格式

云消息队列 RocketMQ 版是阿里云基于Apache RocketMQ构建的低延迟、高并发、高可用、高可靠的分布式“消息、事件、流”统一处理平台。随着Apache RocketMQ 5.0版本的发布,阿里云云消息队列 RocketMQ 版将为您提供更加稳定可靠的服务端5.x版本。本文介绍云消息队列 RocketMQ 版服务端5.x版本和4.x版本的差异及兼容性说明。

5.x版本优势

和历史服务端版本相比,云消息队列 RocketMQ 版5.x版本具有如下优势:

  • 架构更先进

    全面采用存储和计算分离的消息架构,存储和计算可以独立按需水平扩展,满足高效弹性运维和高性能大规格能力的诉求。

  • 开发门槛更低

    主推和Apache RocketMQ完全一致的客户端SDK接入,同时兼容历史所有版本的SDKAPI接口。

    支持VPC内部安全识别,上云只需修改接入点,无需考虑代码改造。

  • 运维门槛更低

    针对线上容量水位评估、业务峰谷弹性、日常灰度环境等常见困难问题提供自适应弹性、轻量测试环境版等解决方案,整体运维门槛和风险更低。

  • 成本更弹性

    通过云底座技术优化,消息收发计算能力支持预留+突发流量弹性组合,业务方无需为突发流量预留大量Buffer。

    消息存储按量使用付费,相比挂载云盘无法缩容的情况,具备极大的弹性优势。

  • 售卖形态更完善

    提供更完善阶梯系列,提供完整的包月和小时价售卖形态。

  • 全新LiteTopic模型更好支持AI应用异步通信

    针对AI业务任务处理耗时长、算力资源稀缺且成本高昂、算力利用率与业务峰谷波动矛盾等普遍痛点问题,提供了轻量主题功能与配套解决方案,开发者可以轻松构建健壮、高效、可扩展的异步通信体系,并平滑请求峰谷,缓解后端处理压力,从而提升资源利用率、节约成本。

各版本SDK说明

云消息队列 RocketMQ 版各版本SDK和功能支持情况如下所示:

下表中"支持"表示支持该功能,"不支持"表示不支持该功能。

对比项

RocketMQ 5.x gRPC SDK

RocketMQ 5.x Remoting SDK

RocketMQ 4.x/3.x SDK

RocketMQ ONS TCP 1.x SDK

RocketMQ ONS TCP 2.x SDK

RocketMQ ONS HTTP SDK

协议

gRPC协议v2

Remoting协议

Remoting协议

Remoting协议

gRPC协议v1

HTTP协议

可访问的实例

5.x系列实例

  • 5.x系列实例

  • 4.x系列实例

  • 5.x系列实例

  • 4.x系列实例

  • 5.x系列实例

  • 4.x系列实例

4.x系列实例

4.x系列实例

使用建议

推荐5.x gRPC SDK。

  • 多语言支持完善。

  • 后续所有新的功能和优化将会在5.x gRPC SDK上得到支持。

  • 如果5.x gRPC SDK的某些功能不能满足需求,则可以考虑使用5.x Remoting SDK。

  • 原业务已使用这些版本的客户端可继续正常使用。

  • 5.x系列实例兼容这些版本的SDK。

  • 不推荐使用这些版本的客户端,这些版本的SDK不支持后续的新功能和优化。

  • 只能访问4.x系列实例。

普通、顺序、事务、定时消息的发送功能

支持

支持

支持

支持

支持

支持

并发消费

支持

支持

支持

支持

支持

支持

顺序消费

支持

支持

支持

支持

支持

支持

顺序消费消费并发度优化

支持

不支持

不支持

不支持

不支持

不支持

广播消费

不支持

支持

支持

支持

不支持

不支持

流式消费(连接 Flink 等)

不支持

支持

支持

不支持

不支持

不支持

消息轨迹

支持

支持

4.5.2及以上版本支持

支持

支持

不支持

生产者消费者客户端Metrics 指标数据

支持

不支持

不支持

不支持

不支持

不支持

优雅下线

支持

仅支持5.x系列实例

不支持

不支持

不支持

不支持

使用 rocketmq-spring-boot-starterons-client 从 4.x 迁移到 5.x 时,请注意以下 Spring Boot Starter 兼容性和 JDK 兼容性问题:

  • Starter 替换说明:不能将 rocketmq-spring-boot-starter 直接替换为 rocketmq-v5-client-spring-boot-starter 以兼容原有配置。两者底层协议不同(前者为 Remoting 协议,后者为 gRPC 协议),配置项差异较大(name-server vs endpoints),且 SimpleConsumer 不支持 @RocketMQMessageListener 注解,需要手动调用接口消费消息。

  • Starter 共存冲突rocketmq-spring-boot-starterrocketmq-v5-client-spring-boot-starter 不能同时引入,否则会导致类冲突或行为异常。建议根据实例版本选择其中一个。

  • 混合使用风险:保留 rocketmq-spring-boot-starter 并引入 rocketmq-client-java 使用 SimpleConsumer,虽然技术上可行(协议与包路径不同,不会直接冲突),但维护成本较高,且无法享受 v5 Starter 的统一开发体验,不推荐此方式。

  • JDK 兼容性ons-client 1.8.4 版本不完全兼容 JDK17,会导致服务无法启动。如果使用 JDK17,请将 ons-client 升级至 1.9.1.Final 及以上版本。

4.x5.x功能兼容说明

云消息队列 RocketMQ 版5.x版本实例基于大规模企业客户的生产实践经验,对消息收发流程中的部分功能行为进行了优化调整。因此,部分场景下的参数配置、功能行为会有差异,一般情况下不影响主要消息收发链路,对于存量4.x版本升级到5.x版本,请您根据业务情况评估风险。

具体的功能行为差异如下:

功能差异项

4.x版本

5.x版本

说明

定时消息最大定时时长

40

  • 共享架构的实例最大支持7天。

  • 独享架构的实例:铂金版支持40天,Serverless独享可以定制。

详细说明请参见配额与限制

超长定时参数会给系统带来稳定性风险,建议定时时长不要设置过长,使用短定时模拟业务场景。更多信息,请参见定时/延时消息

如有4.x存量实例迁移,当前最大定时时长不满足要求,请您提交工单咨询。

HTTP协议支持情况

支持

不支持

5.x版本暂不支持HTTP协议,若您的4.x存量实例使用的HTTP协议,建议暂缓升级。

RAM授权策略

数据链路+管控链路

支持管控链路,但授权策略和4.x版本不一致

  • 5.x版本采用更标准的ARN和策略定义,存量用户需要重新按照5.x版本权限策略进行授权才能正确使用5.x版本资源。

  • 5.x版本数据链路不再支持RAM授权策略,采用RocketMQ开源ACL2.0权限体系。详见用户身份识别

全球消息路由

支持

请使用全球消息复制功能。

全球消息复制支持开源、阿里云4.x、阿里云5.x多种实例类型,提供跨地域、跨实例的消息和消费进度同步能力。

消息类型限制

不限制

强限制

5.x版本将消息类型拆分到主题中进行独立运维和处理,因此系统会对发送的消息类型和主题定义的消息类型进行强制校验,若校验不通过,则消息发送请求会被拒绝,并返回类型不匹配异常。详见主题行为约束

购买限制

  • 云消息队列 RocketMQ 版5.x版本实例面向所有用户提供购买开通服务。

  • 云消息队列 RocketMQ 版4.x版本实例仅支持针对存量用户开放购买,建议您尽量将实例版本升级到5.x,如有升级诉求,请提交工单咨询。

4.x版本至5.x版本升级说明

当前暂不支持使用升级工具将4.x版本实例原地升级到5.x版本。如果您需要将存量实例升级至5.x版本实例,建议您参考如下流程购买5.x版本实例,逐步将业务流量迁移至新的实例。迁移流程

说明

如上图所示,在第二步可以采用Topic、Group导入/导出功能快速实现元数据的创建,详情参见:Topic导入/导出Group导入/导出

业务迁移时,您可以参考以下双读双写、分批发布的方案进行操作。

迁移业务