云消息队列 RocketMQ 版支持TCP协议和HTTP协议的多语言SDK,本文为您介绍这两种协议SDK的差异和使用说明。
各版本SDK说明
云消息队列 RocketMQ 版各版本SDK和功能支持情况如下所示:
下表中的✅表示支持该功能,❌表示不支持该功能。
对比项  | ||||||
协议  | gRPC协议v2  | Remoting协议  | Remoting协议  | Remoting协议  | gRPC协议v1  | HTTP协议  | 
可访问的实例  | 5.x系列实例  | 
  | 
  | 
  | 4.x系列实例  | 4.x系列实例  | 
使用建议  | 推荐5.x gRPC SDK。 
  | 
  | 
  | |||
普通、顺序、事务、定时消息的发送功能  | ✅  | ✅  | ✅  | ✅  | ✅  | ✅  | 
并发消费  | ✅  | ✅  | ✅  | ✅  | ✅  | ✅  | 
顺序消费  | ✅  | ✅  | ✅  | ✅  | ✅  | ✅  | 
顺序消费消费并发度优化  | ✅  | ❌  | ❌  | ❌  | ❌  | ❌  | 
广播消费  | ❌  | ✅  | ✅  | ✅  | ❌  | ❌  | 
流式消费(连接 Flink 等)  | ❌  | ✅  | ✅  | ❌  | ❌  | ❌  | 
消息轨迹  | ✅  | ✅  | 4.5.2及以上版本支持  | ✅  | ✅  | ❌  | 
✅  | ❌  | ❌  | ❌  | ❌  | ❌  | |
✅  | 仅支持5.x系列实例  | ❌  | ❌  | ❌  | ❌  | |
SDK使用限制
同一个ConsumerGroup下的不同 Consumer 使用相同协议的客户端。
同一ConsumerGroup下,从Remoting协议SDK升级至gRPC协议SDK的灰度过程中的注意事项:
顺序投递的ConsumerGroup暂不支持升级。
并发投递的ConsumerGroup可以支持平滑升级,期间会有少量消息重复。
顺序投递ConsumerGroup如果同时满足以下a、b、c 三个步骤,会有顺序消费位点回退的风险:
该顺序consumerGroup先使用Remoting协议SDK运行。
因为业务需要将SDK升级为gRPC协议SDK。
将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(多语言推荐)
TCP和HTTP协议SDK差异对比
TCP协议SDK和HTTP协议SDK支持的功能有所差异,请您根据业务需求提前评估需要使用的协议类型。
SDK协议类型  | TCP协议SDK  | HTTP协议SDK  | 
选择建议  | 建议优先选择 
  | 备用方案选择 
  | 
  | 
  | |
  | 
  | |
  | 
  | |
  | 
  | |
  | 
  | |
  | 
  | |
  | 
  | |
  | 
  | |
  | 
  | |
  | 
  | |
  | 
  | |
  | 
  | |
  | 
  | 
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组网,可以使用公网接入点访问服务。公网接入点需要支付额外的公网下行流量费用,具体信息,请参见公网流量定价详情。