943
阿里云
根据 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. 使用示例
调用示例
public static void main(String []args) {String regionId = "cn-hangzhou";String accessKey = "XXXXXXXXXXXXXXXXX";String secretKey = "XXXXXXXXXXXXXXXXX";String endPointName ="cn-hangzhou";String productName ="Ons";String domain ="ons.cn-hangzhou.aliyuncs.com";/***根据自己需要访问的区域选择Region,并设置对应的接入点*/try {DefaultProfile.addEndpoint(endPointName,regionId,productName,domain);} catch (ClientException e) {e.printStackTrace();}IClientProfile profile= DefaultProfile.getProfile(regionId,accessKey,secretKey);IAcsClient iAcsClient= new DefaultAcsClient(profile);OnsMessageGetByKeyRequest request = new OnsMessageGetByKeyRequest();/***ONSRegionId是指你需要API访问MQ哪个区域的资源.*该值必须要根据OnsRegionList方法获取的列表来选择和配置,因为OnsRegionId是变动的,不能够写固定值*/request.setOnsRegionId("daily");request.setPreventCache(System.currentTimeMillis());request.setAcceptFormat(FormatType.JSON);request.setTopic("MingduanTest");request.setKey("hello");try {OnsMessageGetByKeyResponse response = iAcsClient.getAcsResponse(request);List<OnsMessageGetByKeyResponse.OnsRestMessageDo> onsRestMessageDoList=response.getData();for(OnsMessageGetByKeyResponse.OnsRestMessageDo onsRestMessageDo:onsRestMessageDoList){byte[] messageBody = Base64.decode(onsRestMessageDo.getBody());String message =new String (messageBody);System.out.println(onsRestMessageDo.getTopic()+" "+message+" "+onsRestMessageDo.getFlag()+" "+onsRestMessageDo.getBornHost()+" "+onsRestMessageDo.getStoreSize()+" "+onsRestMessageDo.getStoreHost()+" "+onsRestMessageDo.getStoreTimestamp()+" "+onsRestMessageDo.getReconsumeTimes());}} catch (ServerException e) {e.printStackTrace();} catch (ClientException e) {e.printStackTrace();}
最后更新:2016-11-23 16:04:04
上一篇:
消息轨迹查询__消息管理相关接口_Open API_消息队列 MQ-阿里云
下一篇:
根据 MsgID 查询消息__消息管理相关接口_Open API_消息队列 MQ-阿里云
阿里云流计算服务协议__相关协议_平台介绍_数加平台介绍-阿里云
性能压测注意事项__快速入门_云数据库 HybridDB-阿里云
TableInBatchGetRowResponse__DataType_API 参考_表格存储-阿里云
启停应用__应用管理_用户指南_容器服务-阿里云
拍照照片要求__当面核验_备案流程_备案-阿里云
获取访问者真实IP___常见接入问题_Web 应用防火墙-阿里云
创建自定义镜像__镜像相关接口_API 参考_云服务器 ECS-阿里云
产品与技术__产品简介_数据集成-阿里云
编译__用户手册_持续交付平台-阿里云
命令输出格式__命令行结构和参数_用户指南_命令行工具 CLI-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云