查询 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();
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。