全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 阿里云办公 培训与认证 物联网
消息队列 MQ

根据 Message ID 查询消息

更新时间:2017-09-19 16:25:44   分享:   

OnsMessageGetByMsgId 接口通过传入 MsgId 查询指定消息的信息,包括发送时间,存储服务器,消息的 Key 和 Tag 等熟悉,以及是否被消费过的判断。

使用场景

消息查询功能用于判断消息是否发送成功,发送时间以及目标服务器等信息。

根据 MsgId 查询消息属于精确查询,查询条件需要的 MsgId 由每次发送成功的 SendResult 中获取,因此业务方必须存储每次发送消息的结果。

请求参数列表

名称 类型 是否必须 描述
OnsRegionId String 设置所要查询的区域,具体值通过OnsRegionList接口获取
OnsPlatform String 该请求来源,默认是从 POP 平台
PreventCache Long 用于 CSRF 校验,设置为系统当前时间即可
MsgId String 需要查询的消息的 MsgId
Topic String 需要查询的消息的 Topic

返回参数列表

名称 类型 描述
RequestId String 为公共参数,每个请求独一无二
HelpUrl String 帮助链接
Data Data 查询结果

Data 数据结构

名称 类型 描述
Topic String 消息的 Topic
Flag Integer null
PropertyList List(MessageProperty) 消息属性列表
Body String 消息体
StoreSize Integer 消息大小
BornTimestamp Long 生成时间戳
BornHost String 生成该消息的客户端实例
StoreTimestamp Long 被服务端存储的时间戳
StoreHost String 存储该消息的服务器实例
MsgId String 消息 ID
BodyCRC Integer 消息体 CRC 校验值
ReconsumeTimes Integer 消息重试消费的次数

相关 API

  • OnsMessageGetByMsgKey:根据 MsgKey 模糊匹配查询消息
  • OnsMessageGetByTopic:根据 Topic 和时间范围查询消息

使用示例

  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(endPointNameregionIdproductNamedomain);
  13. } catch (ClientException e) {
  14. e.printStackTrace();
  15. }
  16. IClientProfile profile= DefaultProfile.getProfile(regionIdaccessKeysecretKey);
  17. IAcsClient iAcsClient= new DefaultAcsClient(profile);
  18. OnsMessageGetByMsgIdRequest request = new OnsMessageGetByMsgIdRequest();
  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.setMsgId("0ADA91A600002A9F000002ADDA8137E8");
  27. request.setTopic("TopicTest");
  28. try {
  29. OnsMessageGetByMsgIdResponse response = iAcsClient.getAcsResponse(request);
  30. OnsMessageGetByMsgIdResponse.Data data =response.getData();
  31. byte[] msgbody= Base64.decode(data.getBody());
  32. String message= new String(msgbody);
  33. System.out.println(data.getTopic()+" "+
  34. message+" "+
  35. data.getFlag()+" "+
  36. data.getBornHost()+" "+
  37. data.getStoreSize()+" "+
  38. data.getStoreHost()+" "+
  39. data.getStoreTimestamp()+" “+
  40. data.getReconsumeTimes());
  41. } catch (ServerException e) {
  42. e.printStackTrace();
  43. } catch (ClientException e) {
  44. e.printStackTrace();
  45. }
  46. }
本文导读目录
本文导读目录
以上内容是否对您有帮助?