阅读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-阿里云