云消息队列 RocketMQ 版提供了通过HTTP协议的多语言SDK接入的能力,并支持公网访问。本文介绍HTTP协议下的多语言SDK的版本说明。
多语言支持
云消息队列 RocketMQ 版支持RESTful风格的HTTP协议通信,并提供了7种语言的SDK。HTTP协议的SDK所支持的功能通过不断迭代,与TCP协议的SDK所支持的功能逐渐对齐。HTTP协议的迭代版本所支持的功能与TCP协议功能对比说明,请参见:
注意事项
HTTP协议下,消费者支持通过长轮询和短轮询方式获取云消息队列 RocketMQ 版服务端中的消息进行消费。
长轮询:消费者向服务端发送请求获取指定Topic中的消息,若Topic中没有消息,服务端不会立即返回响应,会将该请求挂起,直到Topic有消息或达到长轮询时间才会返回响应。
短轮询:若Topic中没有消息,服务端会立即返回响应,且再次不断发起订阅请求。
配置方式如下:
长轮询:发起订阅请求时,将
waitSeconds
参数设置为0或不设置。短轮询:发起订阅请求时,将
waitSeconds
参数设置为大于0,最大值为30秒。
具体接口说明,请参见订阅消息API。
当Topic中没有消息产生时,短轮询方式可能会产生大量无效的订阅请求,这部分请求也会仍然计算API调用费用,建议您可以使用长轮询方式适当增加长轮询等待时间,减少无效请求次数以降低费用。具体API调用费用计算方式,请参见API调用费用。
重要消费者在采用HTTP协议发起消费请求时,为确保消息服务的稳定性及消费消息的及时性,当消费者连接数超过100个,长轮询将退化为短轮询。请注意控制消者连接数量,以免退化短轮询产生过多的无效请求次数,从而增加您的成本。
支持HTTP协议SDK接入为云消息队列 RocketMQ 版商业版的增强功能,开源自建RocketMQ集群不支持该功能,无法使用HTTP协议的SDK接入。
确保您需要访问的资源和HTTP接入点在同一地域。
例如您的云消息队列 RocketMQ 版实例在华东1(杭州)地域,则只能使用华东1(杭州)地域的接入点来访问该地域的实例。您可以实现以下场景的资源访问:
如果您的客户端在华东1(杭州)地域,为了最佳体验,请使用该实例的HTTP内网接入点访问该实例资源。
如果您的客户端在华东1(杭州)以外的任一地域,请确保客户端可连上互联网,并使用该实例的HTTP公网接入点访问该实例资源。
TCP协议的客户端和HTTP协议的客户端之间可以实现消息收发。但由于HTTP协议采用XML序列化,因此消息的属性、内容、Tag、Key等必须符合XML规范。
说明XML的规范详情,请参见XML语法。您也可按需使用第三方工具xml_validator校验XML语法的规范性。
如果包含了不符合XML规范的相关字符,那么可能出现以下情况:
采用HTTP协议发送消息时,发送消息失败。
采用TCP协议发送消息,HTTP协议消费消息时,消费消息失败。
您可以自行采用Base64编码对发送的消息进行编(解)码,以适用于此类不符合XML规范的消息收发场景。