全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件
消息队列 MQ

消息查询

更新时间:2017-11-24 10:19:26

OnsMqttQueryMsgByPubInfo 接口根据发送端信息查询消息。

使用场景

根据发送方信息查询消息的接口一般用于线上排查问题,或者查询某条消息的推送到达率等场景使用。需要输入发送方的详细信息来定位特定的消息。条件越精确,匹配出的消息越精确。获取到消息的 TraceId 之后即可根据 TraceId 调用 OnsMqttQueryTraceByTraceId 接口查询该条消息的实际推送量。

请求参数列表

名称 类型 是否必须 描述
OnsRegionId String 当前操作的 MQ 所在区域,详情参见公共术语
OnsPlatform String 请求来源,默认是从 POP 平台。
PreventCache Long 用于 CSRF 校验,设置为系统当前时间即可。
Topic String 需要查询的消息的完整 Topic。
ClientId String 该消息的发送方 ClientId。
BeginTime Long 消息发送时间的起始范围。
EndTime Long 消息发送时间的终止范围,时间范围越小查询越精确,默认只允许查询30分钟区间。

返回参数列表

名称 类型 描述
RequestId String 为公共参数,每个请求独一无二,用于排查定位问题。
HelpUrl String 帮助链接
MqttMessageDos List(MqttMessageDo) 匹配到的所有消息

MqttMessageDo 数据结构

名称 类型 描述
PubTime Long 消息的精确发送时间
TraceId String 消息唯一的 TraceId,根据该 ID 可以查询到推送量。

错误码列表

相关 API

OnsMqttQueryTraceByTraceId:根据 TraceId 查询指定消息的推送量。

使用示例

本示例仅仅提供一个参考,从杭州接入点接入,查询指定信息查询符合条件的所有消息。


    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);
        OnsMqttQueryMsgByPubInfoRequest request = new OnsMqttQueryMsgByPubInfoRequest();
        /**
        *ONSRegionId 是指你需要 API 访问 MQ 哪个区域的资源。
        *该值必须要根据 OnsRegionList 方法获取的列表来选择和配置,因为 OnsRegionId 是变动的,不能够写固定值。
        */
        request.setOnsRegionId("XXXX");
        request.setPreventCache(System.currentTimeMillis());
        request.setAcceptFormat(FormatType.JSON);
        request.setBeginTime(System.currentTimeMillis()-1000*60);
        request.setEndTime(System.currentTimeMillis());
        request.setClientId("GID_XXX@@@XXXX");//发送方的 clientId
        request.setTopic("XXX/XX/XXX");
        try {
                 OnsMqttQueryMsgByPubInfoResponse response = iAcsClient.getAcsResponse(request);
                List<OnsMqttQueryMsgByPubInfoResponse.MqttMessageDo> msgList = response.getMqttMessageDos();
                for(OnsMqttQueryMsgByPubInfoResponse.MqttMessageDo msg:msgList){
                    System.out.println(msg.getpubTime() + "  " +msg.getTraceId());
                }
        } catch (ServerException e) {
          e.printStackTrace();
        } catch (ClientException e) {
          e.printStackTrace();
        }
    }
本文导读目录