SDK参考概述

云消息队列 RocketMQ 版支持TCP协议和HTTP协议的多语言SDK,本文为您介绍这两种协议SDK的差异和使用说明。

各版本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系列实例

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 指标数据

优雅下线

SDK使用限制

  • 同一个ConsumerGroup下的不同 Consumer 使用相同协议的客户端。

  • 同一ConsumerGroup下,从Remoting协议SDK升级至gRPC协议SDK的灰度过程中的注意事项:

    • 顺序投递的ConsumerGroup暂不支持升级。

    • 并发投递的ConsumerGroup可以支持平滑升级,期间会有少量消息重复。

  • 顺序投递ConsumerGroup如果同时满足以下a、b、c 三个步骤,会有顺序消费位点回退的风险:

    1. 该顺序consumerGroup先使用Remoting协议SDK运行。

    2. 因为业务需要将SDK升级为gRPC协议SDK。

    3. SDK回退到了Remoting协议SDK。

  • RocketMQ ONS TCP 2.x SDK只支持部分地域,详情请参见使用限制

TCP协议

重要

社区版SDK仅在迁移开源RocketMQ上云且不希望修改代码时使用,其他场景推荐您使用阿里云云消息队列 RocketMQ 版提供的商业版SDK进行接入。和社区版SDK相比,商业版SDK提供了更加丰富的功能特性并具有更高的稳定性保障。

商业版TCP协议SDK(ONS 1.x/2.x SDK)

社区版TCP协议SDK(4.x/3.x SDK)

HTTP协议

商业版HTTP协议SDK(多语言推荐)

TCPHTTP协议SDK差异对比

TCP协议SDKHTTP协议SDK支持的功能有所差异,请您根据业务需求提前评估需要使用的协议类型。

SDK协议类型

TCP协议SDK

HTTP协议SDK

选择建议

建议优先选择

  • 传输性能好,适用于高并发场景。

  • 消息功能更完整,迭代速度快。

  • 可观测性指标更丰富,消息堆积、消息重置等功能更完善。

备用方案选择

  • 多语言接入的补充方案,TCP协议暂不支持某些语言时可以选择HTTP协议。

  • 轻量接入、功能概念少、适用于简单场景。

普通消息

支持

支持

顺序消息

支持

支持

定时和延时消息

支持

支持

事务消息

支持

支持

PushConsumer

支持

不支持

PullConsumer

支持

不支持

批量消费

支持

不支持

广播消费

支持

不支持

集群消费

支持

支持

消息重试

支持

支持

查询消息轨迹

支持

支持

死信队列

支持

支持

重置消费位点

支持

不支持

SDK使用说明

  • HTTP协议和TCP协议的接入点不可混用。例如,您使用TCP协议的SDK收发消息,您需要获取TCP协议的接入点接入云消息队列 RocketMQ 版服务端。

  • 云消息队列 RocketMQ 版支持HTTP协议和TCP协议的Group ID,不同类型的Group ID不能混用。例如,使用TCP协议的SDK收发消息,则您需要创建TCP协议Group ID。

  • TCP协议的客户端和HTTP协议的客户端之间可以实现消息收发。但由于HTTP协议采用XML序列化,因此消息的属性、内容、Tag、Key等必须符合XML规范。否则可能造成消息发送或消费失败。

    您可以自行采用Base64编码对发送的消息进行编(解)码,以适用于此类不符合XML规范的消息收发场景。

    说明

    XML的规范详情,请参见XML语法。您也可按需使用第三方工具xml_validator校验XML语法的规范性。

  • TCP协议和HTTP协议在各地域均提供公网和内网接入点。生产环境默认推荐使用VPC专有网络走内网访问服务;如果需要跨地域、线下IDC、公网网络访问,且当前无法使用CEN组网,可以使用公网接入点访问服务。公网接入点需要支付额外的公网下行流量费用,具体信息,请参见公网流量定价详情