阅读97 返回首页    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-阿里云