本文針對使用雲訊息佇列 RocketMQ 版SDK與雲Message QueueTT 版互動的情境,提供互動中所涉及的訊息結構和屬性欄位的映射關係,方便您更好的理解和組合使用這兩個產品。
雲Message QueueTT 版是一款面向移動端的網關產品,在實際訊息收發中,需搭配其他儲存產品,例如雲訊息佇列 RocketMQ 版作為訊息儲存使用。
如果單獨使用雲Message QueueTT 版,則無需關注本文提供的映射關係,一切遵循標準MQTT協議規範即可。
雲Message QueueTT 版的詳細介紹,請參見什麼是微Message QueueTT版和名詞解釋。
訊息結構映射
雲Message QueueTT 版和雲訊息佇列 RocketMQ 版都是基於發布/訂閱(Pub/Sub)模型的訊息系統,兩者概念上存在很多相似之處,下圖列舉了關鍵概念的區別和映射關係。

如上圖所示,在雲Message QueueTT 版中Topic是多級結構,而雲訊息佇列 RocketMQ 版的Topic僅有一級,因此,雲Message QueueTT 版中的一級Topic映射到雲訊息佇列 RocketMQ 版的Topic,而二級和三級Topic則映射到雲訊息佇列 RocketMQ 版的訊息屬性(Properties)中。
雲訊息佇列 RocketMQ 版協議中的訊息(Message)可以擁有自訂屬性(Properties),而MQTT協議目前的版本不支援屬性,但為了方便溯源MQTT協議中的Header資訊和裝置資訊,雲Message QueueTT 版的部分資訊將被映射到雲訊息佇列 RocketMQ 版的訊息屬性中,方便使用雲訊息佇列 RocketMQ 版的SDK接入的使用者擷取。
雲訊息佇列 RocketMQ 版和雲Message QueueTT 版的訊息負載(Payload)均是您的業務訊息的資料序列化結果,雲訊息佇列 RocketMQ 版和雲Message QueueTT 版不會對業務訊息再做進一步的編解碼處理。
屬性欄位映射
目前,雲Message QueueTT 版和雲訊息佇列 RocketMQ 版支援的屬性欄位映射關係如下表所示。使用雲訊息佇列 RocketMQ 版和雲Message QueueTT 版的SDK的應用互動時,可以通過讀寫這些屬性欄位來設定或擷取資訊。
QoS、cleanSession、Topic以及Client ID的詳細解釋,請參見名詞解釋。
| 屬性Key | 屬性可選值 | 說明 |
| qoslevel | 0、1、2 | 雲訊息佇列 RocketMQ 版發給雲Message QueueTT 版訊息時可以設定,如果不設定,預設為“1”; 雲Message QueueTT 版發給雲訊息佇列 RocketMQ 版的訊息可以直接讀取。 |
| cleansessionflag | true、false | 雲訊息佇列 RocketMQ 版發給雲Message QueueTT 版用戶端P2P訊息時設定,如不設定,預設為“true”; 其他訊息不可以設定,雲Message QueueTT 版發給雲訊息佇列 RocketMQ 版的訊息可以直接讀取。 |
| mqttSecondTopic | 具體的子級Topic字串 | 雲訊息佇列 RocketMQ 版發給雲Message QueueTT 版用戶端訊息時如果需要子級Topic來做過濾,則設定,如不設定,預設為空白; 雲Message QueueTT 版發給雲訊息佇列 RocketMQ 版的訊息可以直接讀取。 |
| mqttRealTopic | 業務上希望用戶端收到訊息時顯示的子級字串 | 雲訊息佇列 RocketMQ 版發給雲Message QueueTT 版用戶端訊息時如果希望用戶端收到訊息後顯示成指定的子級Topic名稱,則可以設定;一般用於P2P訊息,若不設定,P2P訊息預設使用自己固定的Topic; 雲Message QueueTT 版發給雲訊息佇列 RocketMQ 版的訊息時無該屬性。 |
| clientId | 具體的clientId字串 | 不可設定,雲Message QueueTT 版發給雲訊息佇列 RocketMQ 版訊息時,用於追蹤該訊息的發送源的clientId。 |