閱讀97 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

本文介紹 OnsMessagePageQueryByTopic 接口,該接口通過傳入 Topic 和時間段,分頁查詢指定時間段內存在的所有消息。

1. 使用場景

根據 Topic 查詢消息屬於範圍查詢,查詢結果會通過分頁的方式展示給調用方,僅適用於沒有任何搜索條件(MsgId 和 MsgKey)情況下的查詢。

注意:根據 Topic 查詢,需要盡可能縮短查詢的時間區間,否則匹配的消息過多,將無法定位問題。

2. 調用方式

  • 首先,傳入 Topic,起止時間,以及每頁的大小,進行分頁查詢,如果有消息,默認返回第一頁的消息以及總頁數和查詢 Task ID。
  • 根據返回的結果中的查詢 Task ID,進行後續取消息,取消息時傳入 Task ID 以及當前頁數。

3. 請求參數列表

名稱 類型 是否必須 描述
OnsRegionId String 當前查詢 MQ 所在區域,可以通過 OnsRegionList 方法獲取
OnsPlatform String 該請求來源,默認是從 POP 平台
PreventCache Long 用於 CSRF 校驗,設置為係統當前時間即可
Topic String 需要查詢的消息的 Topic
BeginTime Long 查詢範圍的起始時間戳
EndTime Long 查詢範圍的終止時間戳
TaskId String 查詢任務的 ID,首次查詢不需要輸入,後續取消息必須傳入,根據第一次的返回結果取出該字段
CurrentPage Integer 當前取第幾頁消息,從1開始遞增,取消息時不可超過最大頁數
PageSize Integer 分頁查詢,每頁最多顯示消息數量,默認是20,最小5條,最多50條

4. 返回參數列表

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

MsgFoundDo 數據結構

名稱 類型 描述
TaskId String 第一次新建查詢時,返回的 Task ID,用於後續取消息用
MaxPageCount Long 查詢結果最大頁數
CurrentPage Long 當前位於第幾頁
Data List(OnsRestMessageDo) 當前頁的消息集合,該類型與 messageGetById 的返回結果一致

5. 相關 API

  • OnsMessageGetByMsgId:根據 MsgId 精確查詢消息
  • OnsMessageGetByMsgKey:根據 MsgKey 模煳查詢消息

6. 使用示例

新建查詢調用示例

  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. OnsMessagePageQueryByTopicRequest request = new OnsMessagePageQueryByTopicRequest();
  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.setBeginTime(System.currentTimeMillis()-24*3600*1000);
  28. request.setEndTime(System.currentTimeMillis());
  29. request.setCurrentPage(1);
  30. request.setPageSize(20);
  31. try {
  32. OnsMessagePageQueryByTopicResponse response = iAcsClient.getAcsResponse(request);
  33. } catch (ServerException e) {
  34. e.printStackTrace();
  35. } catch (ClientException e) {
  36. e.printStackTrace();
  37. }
  38. }

分頁取消息調用示例

  1. public static void main(String []args) {
  2. String regionId = "cn-hangzhou";
  3. String accessKey = "XXXXX";
  4. String secretKey = "XXXXX";
  5. IClientProfile profile = DefaultProfile.getProfile(regionId, accessKey, secretKey);
  6. IAcsClient iAcsClient = new DefaultAcsClient(profile);
  7. OnsMessagePageQueryByTopicRequest request = new OnsMessagePageQueryByTopicRequest();
  8. /**
  9. *ONSRegionId是指你需要API訪問MQ哪個區域的資源.
  10. *該值必須要根據OnsRegionList方法獲取的列表來選擇和配置,因為OnsRegionId是變動的,不能夠寫固定值
  11. */
  12. request.setOnsRegionId("daily");
  13. request.setPreventCache(System.currentTimeMillis());
  14. request.setAcceptFormat(FormatType.JSON);
  15. request.setTopic("MingduanTest");
  16. request.setBeginTime(System.currentTimeMillis()-24*3600*1000);
  17. request.setEndTime(System.currentTimeMillis());
  18. request.setCurrentPage(3);
  19. request.setTaskId("0ADA91A600002A9F000002ADDA8137E8");
  20. try {
  21. OnsMessagePageQueryByTopicResponse response = iAcsClient.getAcsResponse(request);
  22. } catch (ServerException e) {
  23. e.printStackTrace();
  24. } catch (ClientException e) {
  25. e.printStackTrace();
  26. }
  27. }

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

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