赞
踩
企业在使用阿里专有云服务的时候,自带的ASCM操作界面不一定满足企业的管理需求,并且提供的功能也不一定很全面,那么企业要按自己的需求开发一套操作界面,可以吗?专有云提供了一套庞大的OpenAPI,可能不一定包含所有功能,但已经很强大,可以满足企业日常大部分需求。专有云上的产品众多,不同的产品也是由不同的团队开发,提供的接口也不尽相同,这篇文章分享一下其中一个产品–消息队列MQ。
这里说的消息队列,对应的是MQ RocketMQ版。原名开放消息服务,简称ONS。本文介绍的不是对MQ产品本身的发布/订阅这种使用,而是使用OpenAPI开发MQ控制台功能。在开发之前,我们自然需要了解尽可能多的资料,有没有什么途径可以了解API呢?其实在官网已经提供了一些文档,可以帮助我们了解产品的API接口。
软件 | 版本 |
---|---|
专有云 | 3.12.0、3.14.0 |
不同的云产品有自己的Endpoint,消息队列的Endpoint格式如下:
https://mq.console.ext.xxx.xxx.xxx
xxx.xxx.xxx是企业专有云的域名,比如: m.myself.com,那么完整Endpoint就是: https://mq.console.ext.m.myself.com
这个地址是根据专有云运维团队进行配置的,如果不对可以咨询运维具体的Endpoint
另外需要注意的是,专有云服务有白名单功能,不是任意IP都可以访问,如果telnet不通,可以申请开通专有云访问权限
开发专有云消息队列控制台功能,没有相应的SDK,只能根据接口文档进行http请求的调用。
以查询MQ实例列表接口为例,请求的完整接口地址是:
https://mq.console.ext.m.myself.com/json/instance/list
请求示例代码:
@Test void onsDemo_oneInstanceList() { //设置Http的Header HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); //设置访问参数 Map<String, Object> params = new LinkedHashMap<>(); params.put("_accesskey", accessKeyId); params.put("__preventCache", String.valueOf(System.currentTimeMillis())); params.put("_regionId", aliyunPropClientProperties.getRegionId()); params.put("_signature", SignatureUtils.getSignatureOpenApi(accessKeySecret, params)); HttpEntity entity = new HttpEntity<>(params, headers); String url = "https://mq.console.ext.m.myself.com"; String path = "/json/instance/list"; StringBuilder urlBuilder = new StringBuilder(); urlBuilder.append(url).append(path).append("?"); for(Map.Entry<String, Object> entry : params.entrySet()) { urlBuilder.append(entry.getKey()).append("=").append(entry.getValue()).append("&"); } urlBuilder.setLength(urlBuilder.length()-1); ResponseEntity<String> testResult = restTemplate.getForEntity(new URI(urlBuilder.toString()), String.class); assertEquals(HttpStatus.OK, testResult.getStatusCode()); }
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "mq:OnsInstanceBaseInfo", "mq:QueryGroupSubDetail", "mq:*Query", "mq:Query*", "mq:List*", "mq:*List", "mq:PUB", "mq:SUB" ], "Resource": [ "acs:mq:*:*:*" ] }, { "Action": [ "mq:QueryGroupSubDetail" ], "Resource": "*", "Effect": "Allow" } ] }
《开发指南》中有获取Topic授权列表,接口地址是/json/empower/list
但是《开发指南》中并没有获取Group授权列表的接口说明,经过咨询得知,接口地址是/json/empower/listGroup
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。