閱讀943 返回首頁    go 英雄聯盟


根據 Key 查詢消息__消息管理相關接口_Open API_消息隊列 MQ-阿裏雲

本文檔介紹 OnsMessageGetByMsgKey 接口,該接口通過傳入 Topic 和 MsgKey 進行模煳查詢,得到符合條件的消息的信息列表。

1. 使用場景

根據 MsgKey 查詢消息屬於模煳查詢,由於業務方的 key 可能不唯一,所以查詢結果可能為多條。一般用在業務方無法獲取 MsgId 的場景下,先進行模煳查詢得到 msgId 列表,再調用 OnsMessageGetByMsgId 接口查詢。

2. 請求參數列表

名稱 類型 是否必須 描述
OnsRegionId String 當前查詢 MQ 所在區域,可以通過 OnsRegionList 方法獲取
OnsPlatform String 該請求來源,默認是從 POP 平台
PreventCache Long 用於 CSRF 校驗,設置為係統當前時間即可
Topic String 需要查詢的消息的 Topic
Key String 需要查詢的消息的 MsgKey

3. 返回參數列表

名稱 類型 描述
RequestId String 為公共參數,每個請求獨一無二
HelpUrl String 幫助鏈接
Data List(OnsRestMessageDo) 查詢結果

OnsRestMessageDo 數據結構

名稱 類型 描述
Topic String 消息的 Topic
Flag Integer null
PropertyList List(MessageProperty) 消息屬性列表
Body String 消息體
StoreSize Integer 消息大小
BornTimestamp Long 生成時間戳
BornHost String 生成該消息的客戶端實例
StoreTimestamp Long 被 Broker 存儲的時間戳
StoreHost String 存儲該消息的服務器實例
MsgId String 消息 ID
BodyCRC Integer 消息體 CRC 校驗值
ReconsumeTimes Integer 消息重試消費的次數

4. 相關 API

  • OnsMesageGetByMsgId:根據 MsgId 精確查詢消息
  • OnsMessageGetByTopic:根據 Topic 進行時間範圍查詢

5. 使用示例

調用示例

  1. public static void main(String []args) {
  2. String regionId = "cn-hangzhou";
  3. String accessKey = "XXXXXXXXXXXXXXXXX";
  4. String secretKey = "XXXXXXXXXXXXXXXXX";
  5. String endPointName ="cn-hangzhou";
  6. String productName ="Ons";
  7. String domain ="ons.cn-hangzhou.aliyuncs.com";
  8. /**
  9. *根據自己需要訪問的區域選擇Region,並設置對應的接入點
  10. */
  11. try {
  12. DefaultProfile.addEndpoint(endPointName,regionId,productName,domain);
  13. } catch (ClientException e) {
  14. e.printStackTrace();
  15. }
  16. IClientProfile profile= DefaultProfile.getProfile(regionId,accessKey,secretKey);
  17. IAcsClient iAcsClient= new DefaultAcsClient(profile);
  18. OnsMessageGetByKeyRequest request = new OnsMessageGetByKeyRequest();
  19. /**
  20. *ONSRegionId是指你需要API訪問MQ哪個區域的資源.
  21. *該值必須要根據OnsRegionList方法獲取的列表來選擇和配置,因為OnsRegionId是變動的,不能夠寫固定值
  22. */
  23. request.setOnsRegionId("daily");
  24. request.setPreventCache(System.currentTimeMillis());
  25. request.setAcceptFormat(FormatType.JSON);
  26. request.setTopic("MingduanTest");
  27. request.setKey("hello");
  28. try {
  29. OnsMessageGetByKeyResponse response = iAcsClient.getAcsResponse(request);
  30. List<OnsMessageGetByKeyResponse.OnsRestMessageDo> onsRestMessageDoList=response.getData();
  31. for(OnsMessageGetByKeyResponse.OnsRestMessageDo onsRestMessageDo:onsRestMessageDoList){
  32. byte[] messageBody = Base64.decode(onsRestMessageDo.getBody());
  33. String message =new String (messageBody);
  34. System.out.println(onsRestMessageDo.getTopic()+" "+message+" "+
  35. onsRestMessageDo.getFlag()+" "+
  36. onsRestMessageDo.getBornHost()+" "+
  37. onsRestMessageDo.getStoreSize()+" "+
  38. onsRestMessageDo.getStoreHost()+" "+
  39. onsRestMessageDo.getStoreTimestamp()+" "+
  40. onsRestMessageDo.getReconsumeTimes());
  41. }
  42. } catch (ServerException e) {
  43. e.printStackTrace();
  44. } catch (ClientException e) {
  45. e.printStackTrace();
  46. }

最後更新:2016-11-23 16:04:04

  上一篇:go 消息軌跡查詢__消息管理相關接口_Open API_消息隊列 MQ-阿裏雲
  下一篇:go 根據 MsgID 查詢消息__消息管理相關接口_Open API_消息隊列 MQ-阿裏雲