商業版HTTP協議SDK(多語言推薦)
云消息隊列 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規范的消息收發場景。