开发者社区> 问答> 正文

如何查询指定 Topic 状态

查询 Topic

OnsTopicGet 接口用于查询指定 Topic 的信息,属于精确查询。

使用场景

查询账号下指定 Topic 的分布情况,并获取 Topic 当前的开通状态和权限关系等信息。由于是精确查询,因此输入参数必须包含 Topic 名称。

请求参数列表

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

名称    类型    描述
RequestId    String    为公共参数,每个请求独一无二
HelpUrl    String    帮助链接
Data    List(PublishInfoDo)    返回所有已发布的 Topic 信息列表
PublishInfoDo 数据结构

成员    类型    描述
id    Long    该 Topic 信息编号
channelId    Integer    该 Topic 所在区域 ID,0代表阿里云,1代表聚石塔
channelName    String    该 Topic 所在类别,阿里云,或者聚石塔,…
onsRegionId    Long    该 Topic 所在区域 ID,就是 ONSRegionList 方法获取的内容
regionName    String    该 Topic 所在区域名称
topic    String    Topic 名称
owner    String    Topic 所有者编号,为阿里云的 uid
relation    Integer    所有关系编号1为持有者,2为可以发布,4为可以订阅,6为可以发布和订阅
relationName    String    所有关系名称,例如持有者、可订阅、可发布、可发布订阅
status    Integer    当前状态编号(0 服务中 1 冻结 2 暂停)
statusName    String    当前状态别名,服务中,未开通
appkey    String    null
createTime    Long    创建时间
updateTime    Long    更新时间
remark    String    备注信息
相关 API

OnsTopicCreate:创建 Topic
OnsTopicList:查看 Topic 列表
OnsPublishDelete:删除发布关系
OnsSubscribeDelete:删除订阅关系
使用示例

本示例仅仅提供一个参考,从华东1接入点接入,查询名为”MingduanTest”的 Topic,并打印 Topic 的相关信息。

    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);
        OnsTopicGetRequest request = new OnsTopicGetRequest();
        request.setAcceptFormat(FormatType.JSON);
        request.setTopic("MingduanTest");
            /**
            *ONSRegionId是指需要API访问MQ哪个区域的资源.
            *该值必须要根据OnsRegionList方法获取的列表来选择和配置,因为OnsRegionId是变动的,不能够写固定值
            */
        request.setOnsRegionId("daily");
        request.setPreventCache(System.currentTimeMillis());
        try {
            OnsTopicGetResponse response = IAcsClient.getAcsResponse(request);
            List<OnsTopicGetResponse.PublishInfoDo> publishInfoDoList=response.getData();
            for (OnsTopicGetResponse.PublishInfoDo publishInfoDo:publishInfoDoList){
                System.out.println(publishInfoDo.getId()+"  "+
                        publishInfoDo.getChannelId()+"  "+
                publishInfoDo.getChannelName()+"  "+
                publishInfoDo.getOnsRegionId()+"  "+
                publishInfoDo.getRegionName()+"  "+
                publishInfoDo.getTopic()+"  "+
                publishInfoDo.getOwner()+"  "+
                publishInfoDo.getRelation()+"  "+
                publishInfoDo.getRelationName()+"  "+
                publishInfoDo.getStatus()+"  "+
                publishInfoDo.getStatusName()+"  "+
                publishInfoDo.getAppkey()+"  "+
                publishInfoDo.getCreateTime()+"  "+
                publishInfoDo.getUpdateTime()+"  "+
                publishInfoDo.getRemark());
            }
            System.out.println(response.getRequestId());
        }
        catch (ServerException e) {
            e.printStackTrace();
        }
        catch (ClientException e) {
            e.printStackTrace();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }

展开
收起
猫饭先生 2017-10-27 13:30:22 2135 0
0 条回答
写回答
取消 提交回答
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载