雲訊息佇列 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)
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組網,可以使用公網存取點訪問服務。公網存取點需要支付額外的公網下行流量費用,具體資訊,請參見公網流量定價詳情。