目录

  • 阿里专有云OpenAPI开发实践之消息队列
  • 环境介绍
  • 文档资料
  • 消息队列MQ产品的Endpoint
  • 消息队列产品没有相应的SDK
  • 简单调用示例
  • RAM授权
  • 《开发指南》之外的OpenAPI
  • 总结

阿里专有云OpenAPI开发实践之消息队列

企业在使用阿里专有云服务的时候,自带的ASCM操作界面不一定满足企业的管理需求,并且提供的功能也不一定很全面,那么企业要按自己的需求开发一套操作界面,可以吗?专有云提供了一套庞大的OpenAPI,可能不一定包含所有功能,但已经很强大,可以满足企业日常大部分需求。专有云上的产品众多,不同的产品也是由不同的团队开发,提供的接口也不尽相同,这篇文章分享一下其中一个产品–消息队列MQ。

这里说的消息队列,对应的是MQ RocketMQ版。原名开放消息服务,简称ONS。本文介绍的不是对MQ产品本身的发布/订阅这种使用,而是使用OpenAPI开发MQ控制台功能。在开发之前,我们自然需要了解尽可能多的资料,有没有什么途径可以了解API呢?其实在官网已经提供了一些文档,可以帮助我们了解产品的API接口。

环境介绍

软件 版本
专有云 3.12.0、3.14.0

文档资料

  • 专有云文档中心地址: https://help.aliyun.com/apsara/index.html
  • 专有云3.12.0版本的RocketMQ开发指南下载
  • 专有云3.14.0版本的RocketMQ开发指南下载

消息队列MQ产品的Endpoint

不同的云产品有自己的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

开发专有云消息队列控制台功能,没有相应的SDK,只能根据接口文档进行http请求的调用。

简单调用示例

以查询MQ实例列表接口为例,请求的完整接口地址是:
https://mq.console.ext.m.myself.com/json/instance/list

请求示例代码:

    @Testvoid onsDemo_oneInstanceList() {//设置Http的HeaderHttpHeaders 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());}

RAM授权

  • 如果提示没有权限,或者查不到数据,需要对用户进行RAM授权。
  • 参考官方资料:https://help.aliyun.com/document_detail/112711.html
  • RAM授权示例如下
{"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"}]
}

《开发指南》之外的OpenAPI

《开发指南》中有获取Topic授权列表,接口地址是/json/empower/list

但是《开发指南》中并没有获取Group授权列表的接口说明,经过咨询得知,接口地址是/json/empower/listGroup

总结

  • 消息队列的控制台API没有SDK,需要使用原生http发起请求
  • 使用RestTemplate这个工具调用时,需要把签名后的url包装成URI对象,否则会报-4009签名错误
  • 《开发指南》没有的API,需要咨询阿里TIM团队进一步确认是否有相应的接口
  • 专有云有IP白名单限制,不是每个人的IP都可以访问专有云,需要申请开通访问权限
  • 界面是靠组织用户角色进行管理,OpenAPI是靠RAM授权,没有RAM授权就会出现在界面上能正常查到数据,通过API查不到

阿里专有云OpenAPI开发实践之消息队列相关推荐

  1. 《阿里专有云等保合规白皮书》发布,阿里云实现首个一体化云原生安全架构

    2019阿里云峰会·北京,阿里云联合公安部信息安全等级保护评估中心发布了<阿里专有云等保合规白皮书>(以下简称<白皮书>),基于云等保合规技术框架,给出了阿里专有云多种交付场景 ...

  2. WCF分布式安全开发实践(9):消息安全模式之Windows身份验证:Message_Windows_NetTcpBinding...

    今天继续WCF分布式安全开发实践(9):消息安全模式之Windows身份验证:Message_Windows_NetTcpBinding.本文介绍的内容主要是:主要是消息安全模式的Windows身份验 ...

  3. 阿里云ACE共创空间——MQ消息队列产品测试

    一.产品背景 消息队列是阿里巴巴集团自主研发的专业消息中间件. 产品基于高可用分布式集群技术,提供消息订阅和发布.消息轨迹查询.定时(延时)消息.资源统计.监控报警等一系列消息云服务,是企业级互联网架 ...

  4. Apache Pulsar在智联招聘的实践 -- 从消息队列到基于Apache Pulsar的事件中心

    导读:本文中鹏辉介绍了以前的消息中间件在智联招聘的应用和场景:以及对消息中间件选型的诉求:详细描述了选型过程中的细致思考.接着介绍了为什么会选择Pulsar,以及Pulsar中和智联的场景匹配的特性. ...

  5. [阶段4 企业开发进阶] 3. 消息队列--RabbitMQ

    文章目录 1 消息队列 1.1 MQ的概念 基本介绍 使用原因 MQ分类 如何选择 1.2 RabbitMQ RabbitMQ核心 工作原理 安装教程 2 Hello World 2.1 依赖 2.2 ...

  6. Redis应用实践-使用消息队列发布微博

    使用消息队列发布微博 有时候我们的应用中(如:微博)会出现这样的情况,一秒钟有很多用户同时发布消息.这个时候数据库Mysql可能会出现"too many connections". ...

  7. FreeRTOS源码分析与应用开发04:消息队列

    目录 1. 队列结构 2. 创建队列 2.1 动态创建队列 2.1.1 xQueueCreate函数 2.1.2 xQueueGenericCreate函数 2.1.3 xQueueGenericRe ...

  8. 7.阿里云 大数据开发实践odpscmdO2O优惠券使用预测

    代码有一定错误!!! 目录: 1.odps客户端,上传较大文件创建表结构o2o_online_train: (1)上传文件命令 (2)数据划分 2.提取特征需要用的数据列 3.优惠券相关特征 4.用户 ...

  9. 阿里云专有云——安全可控由内而生

    2018云栖大会武汉峰会,阿里云专有云事业部总经理马劲为大家介绍了阿里云专有云的优势特点.为什么要做专有云呢?本文从阿里云建设中台的思路开始谈起,详谈了阿里云做专有云的初衷,接着讲解了公共云必将替代传 ...

最新文章

  1. Android Timer的使用
  2. 原生js实现ajax的文件异步提交功能、图片预览功能.实例
  3. 想学python有什么用-Python为什么这么火?学习python有什么用?
  4. 【数据结构与算法】之深入解析“验证IP地址”的求解思路与算法示例
  5. JavaScript数据结构与算法——数组详解(上)
  6. intellij中运行后出现Hadoop is not in the classpath/dependencies
  7. 将网站SSL Server Certificate导入ABAP系统,证书Subject中文字符被转义引起的问题
  8. JDK8新特性(一)之Lambda表达式
  9. nis从服务器接替nis主服务器步骤
  10. Nginx二级目录反向代理网站
  11. CSDN博客积分标准,包括博客勋章等
  12. 55寸0.88mm拼接屏对比1.8mm拼接显示效果
  13. 运算放大器使用注意事项
  14. python报错ImportError: cannot import name ‘Image‘ from ‘PIL‘ 的时候大多数情况下是由于PIL版本和当前python的版本出现了不兼容
  15. “一键GHOST”傻瓜式系统备份与恢复
  16. flutter基于provider状态管理设置主题颜色、实现简单登录、注册功能---页面+逻辑
  17. Ionic2像使用字体图标一样使用png图标等
  18. 为什么N型MOS管占据主导地位
  19. 北师大再回首:二十一岁的天空
  20. PDF转TXT怎么转?看完这篇你就会了

热门文章

  1. 电气本科生靠计算机方向研究生,考研究生时,需要把本科学的电气工程专业改为人工智能专业吗...
  2. TopShelf配置
  3. 荣耀pad支持html5吗,荣耀平板5
  4. 英文之妙语连珠(五)(ZT)
  5. 计算机中级审计职称考试试题,历年中级审计师考题
  6. IOS technical support
  7. 卫星导航定位——卫星信号基础
  8. 前端笔记82——随机抽奖的JS代码
  9. 区块链将颠覆游戏行业的付费模式
  10. 零跑是有信心了吗?零跑的股价集体向好发展