开发者社区 问答 正文

如何查询消费端连接

OnsConsumerConnection 接口用于查询指定订阅组(CID)下当前客户端的连接情况。

使用场景

一般用于判断指定 CID 的消费者是否在线,并获取详细的客户端连接的列表。

请求参数列表

名称    类型    是否必须    描述
OnsRegionId    String    是    当前查询 MQ 所在区域,可以通过 ONSRegionList 方法获取
OnsPlatform    String    否    该请求来源,默认是从 POP 平台
PreventCache    Long    是    用于 CSRF 校验,设置为系统当前时间即可
ConsumerId    String    是    需要查询的消费端 CID
返回参数列表

名称    类型    描述
RequestId    String    为公共参数,每个请求独一无二
HelpUrl    String    帮助链接
Data    List(ConnectionDo)    指定 Consumer 的连接信息
ConnectionDo 数据结构

成员    类型    描述
ClientId    String    消费实例的 ID
ClientAddr    String    该消费实例的地址和端口
Language    String    消费端语言
Version    String    消费端版本
相关 API

OnsConsumerStatus:消费者状态查询
OnsConsumerAccumulate:消费堆积查询
使用示例

    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);
            OnsConsumerGetConnectionRequest request = new OnsConsumerGetConnectionRequest();
            /**
            *ONSRegionId是指你需要API访问MQ哪个区域的资源.
            *该值必须要根据OnsRegionList方法获取的列表来选择和配置,因为OnsRegionId是变动的,不能够写固定值
            */
            request.setOnsRegionId("daily");
            request.setPreventCache(System.currentTimeMillis());
            request.setAcceptFormat(FormatType.JSON);
            request.setConsumerId("RTDSQ_1013_GROUP");
            try {
                OnsConsumerGetConnectionResponse response=iAcsClient.getAcsResponse(request);
                List<OnsConsumerGetConnectionResponse.Data.ConnectionDo> connectionDoList=response.getData().getConnectionList();
                for(OnsConsumerGetConnectionResponse.Data.ConnectionDo connectionDo:connectionDoList){
                    System.out.println(connectionDo.getClientId()+"  "+
                    connectionDo.getClientAddr()+"  "+
                    connectionDo.getLanguage()+"  "+
                    connectionDo.getVersion());
                }
            } catch (ServerException e) {
                e.printStackTrace();
            } catch (ClientException e) {
                e.printStackTrace();
            }
        }

展开
收起
猫饭先生 2017-10-27 13:40:23 1765 分享 版权
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: