OnsMqttQueryMsgTransTrend

根据 Topic 等信息查询历史消息收发量。

描述

使用场景

OnsMqttQueryMsgTransTrend 接口一般用于生成数据报表、统计业务规模等场景。

使用限制

由于 OpenAPI 面向的场景是用户自定义管控开发,服务端会对过快的调用进行限流(每分钟 30 次),因此不要在业务的主流程中使用本接口。如需判断设备是否在线,请使用设备上下线通知功能。

请求参数列表

名称 类型 是否必需 描述
OnsPlatform String 请求来源,默认来源是 POP 平台
PreventCache Long 用于 CSRF 校验,设置为系统当前时间即可,单位毫秒(ms)
ParentTopic String 需查询的父 Topic
SubTopic String 需查询的子 Topic,如果没有子 Topic 或者需查询父 Topic 的所有信息,可为空
MsgType String 消息类别,取值说明如下:
  • P2P:点对点
  • SUB:发布/订阅
如果不填则默认查所有消息,其他值无效。
TpsType String 查询类别,取值说明如下:
  • TPS:消息生产 TPS
  • SUM:查询消息生产总量
其他值无效。
TransType String 收发类别,取值说明如下:
  • PUB:查询生产端消息生产总量
  • SUB:查询消费端消息消费总量
其他值无效。
Qos Integer 查询的 QoS 级别,取值说明如下:
  • 0:最多分发一次
  • 1:至少达到一次
  • 2:仅分发一次
其他值或者不填都默认查所有消息。关于 QoS 的详细信息,请参见名词解释
BeginTime Long 查询的起始时间
EndTime Long 查询的终止时间,起止时间范围建议尽可能在当天,否则后端会自动截断。
InstanceId String 需查询的消息所属的 MQTT 实例 ID

返回参数列表

名称 类型 描述
RequestId String 为公共参数,每个请求的 ID 都是唯一的
HelpUrl String 帮助链接
data Data 数据集合

Data 数据集列表

名称 类型 描述
Title String Table 的名称
Records List(StatsDataDo) 采集点信息

StatsDataDo 数据集列表

名称 类型 描述
X Long 横轴,毫秒时间戳
Y Float 纵轴,数据(TPS 或者总量)

使用示例

本示例仅仅提供一个参考,从杭州接入点接入,查询指定 Topic 过去一小时的消息发送数量信息。


    public static void main(String[] args) {
        String regionId = "cn-hangzhou";
        String accessKey = "XXXXXXXXXXXXXXXXX";
        String secretKey = "XXXXXXXXXXXXXXXXX";
        IClientProfile profile= DefaultProfile.getProfile(regionId,accessKey,secretKey);
        IAcsClient iAcsClient= new DefaultAcsClient(profile);
        OnsMqttQueryMsgTransTrendRequest request = new OnsMqttQueryMsgTransTrendRequest();
		request.setInstanceId("aaaaa");
        request.setPreventCache(System.currentTimeMillis());
        request.setAcceptFormat(FormatType.JSON);
        request.setParentTopic("MQTT_TOPIC_ONSMONITOR_BJ");
        //request.setMsgType("sub");
        request.setTpsType("SUM");
        request.setTransType("PUB");
        //request.setQos(1);
        request.setBeginTime(System.currentTimeMillis()-1000*3600);
        request.setEndTime(System.currentTimeMillis());
        try {
         	    OnsMqttQueryMsgTransTrendResponse response = iAcsClient.getAcsResponse(request);
               	OnsMqttQueryMsgTransTrendResponse.Data data =response.getData();
                System.out.println(data.getTitle()+"\n"+
                data.getRecords());
        } catch (ServerException e) {
          e.printStackTrace();
        } catch (ClientException e) {
          e.printStackTrace();
        }
    }