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

根据 Topic 查询在线数量

更新时间:2017-08-11 15:07:57   分享:   

OnsMqttQueryClientByTopic 接口根据 MQTT 的 Topic 统计订阅该 Topic 的在线设备的数量。

使用场景

根据 Topic 查询在线设备数量的接口一般用于业务分析。业务上订阅某个特定 Topic 的设备一般是参与某个特殊活动的设备,可以根据 Topic 查询参与该活动的设备数量。

请求参数列表

名称 类型 是否必须 描述
OnsRegionId String 当前操作的 MQ 所在区域,详情参见公共术语页面
OnsPlatform String 请求来源,默认是从 POP 平台
PreventCache Long 用于 CSRF 校验,设置为系统当前时间即可
ParentTopic String 需要查询的目标 MQTT 一级父 Topic
SubTopic String 需要查询的目标子 Topic,如果没有则不填

返回参数列表

名称 类型 描述
RequestId String 为公共参数,每个请求独一无二,用于排查定位问题
HelpUrl String 帮助链接
MqttClientSetDo MqttClientSetDo 分组在线信息数据结构

MqttClientSetDo 数据结构

名称 类型 描述
OnlineCount Long 分组所有在线设备数量

错误码列表

相关 API

  • OnsMqttQueryClientByTopic:根据 Topic 查询当前订阅该 Topic 的在线客户端数量

使用示例

本示例仅仅提供一个参考,从杭州接入点接入,查询指定 groupId 的在线数量信息。

  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. OnsMqttQueryClientByTopicRequest request = new OnsMqttQueryClientByTopicRequest();
  19. /**
  20. *ONSRegionId是指你需要API访问MQ哪个区域的资源。
  21. *该值必须要根据OnsRegionList方法获取的列表来选择和配置,因为OnsRegionId是变动的,不能够写固定值
  22. */
  23. request.setOnsRegionId("XXXX");
  24. request.setPreventCache(System.currentTimeMillis());
  25. request.setAcceptFormat(FormatType.JSON);
  26. request.setParentTopic("XXXX");
  27. request.setSubTopic("/secTopic/0/1");//此处如果没有子topic则不填,如果有,一定是完整的信息
  28. try {
  29. OnsMqttQueryClientByTopicResponse response = iAcsClient.getAcsResponse(request);
  30. OnsMqttQueryClientByTopicResponse.MqttClientSetDo clientSetDo = response.getMqttClientSetDo();
  31. System.out.println(clientSetDo.getOnlineCount() + " " +
  32. clientSetDo.getPersistCount() + " ");
  33. } catch (ServerException e) {
  34. e.printStackTrace();
  35. } catch (ClientException e) {
  36. e.printStackTrace();
  37. }
  38. }
本文导读目录
本文导读目录
以上内容是否对您有帮助?