腾讯蓝鲸论坛-专业的技术交流论坛

 找回密码
 立即加入蓝鲸智云论坛
忘了密码?
搜索
热搜: 用户手册 FAQ
查看: 1391|回复: 1

[经验分享] Blueking-ESB项目总结

 关闭 [复制链接]

2

主题

0

好友

141

积分

进阶会员

Rank: 4

发表于 2017-3-31 11:19:47 |显示全部楼层
本帖最后由 lekoood 于 2017-3-31 11:19 编辑

Blueking-ESB项目总结
通过自定义组件抓取知乎热帖

目录
1. 添加自定义组件的步骤
2. 创建自定义组件所属的系统
3. 编写自定义组件代码
    3.1 目录结构
    3.2 配置环境变量
    3.3 自定义数据处理逻辑
    3.4 类中做两件事:数据校验和请求处理
    3.5 数据校验 - Form
    3.6 请求的处理 - handle
4. 手动添加自定义组件的通道
    4.1 创建手动接入组件需要的通道
    4.2 接口API
5. 访问测试
6. 代码




1. 添加自定义组件的步骤
(1) 创建系统
(2) 把模块代码放到paas机器ESB项目的components/generic/apis/下
(3) 重启dashboard让系统注册添加的模块
(4) 创建通道


2. 创建自定义组件所属的系统


01.png



3.  编写自定义组件代码
3.1  目录结构
02.png

(1) toolkit/configs.py: 配置环境变量
(2) toolkit/tools.py: 数据处理逻辑
(3) get_zhihu_topic.py: 处理API调用请求


3.2 配置环境变量
在toolkit.configs.py中配置后面需要的环境变量:


03.png


3.3 自定义数据处理逻辑

为了使代码看起来方便,把自定义的数据处理逻辑放在了toolkit/tools.py中。
返回值的格式是自定义的,为了方便使用,这里使用json格式。
在GetZhihuTopic类的handle方法中可以通过这里返回的标识判断是否成功。


04.png


3.4  类中做两件事:数据校验和请求处理
注意类和模块(文件名)的命名:
类名采用驼峰命名方式,模块名(get_zhihu_topic)是类名(GetZhihuTopic)中间的大写字母变小写,同时添加一个下划线。
配置通道时填写的是模块名。


05.png


3.5  数据校验 - Form

(1) 通过API发出的request请求附带的参数都在这里进行校验(Form校验可以省略)required=True表示必填
(2) 校验后的数据放在self.cleaned_data字典里,key是参数的名称
(3) self.form_data是 Form中的clean方法返回的json数据


06.png



看一眼POSTMAN的请求界面帮助理解

07.png


3.6  请求的处理 - handle
通过API访问的请求,最终在handle方法里完成(逻辑处理,返回结果数据)。

从这里可以看到在toolkit.configs.py中配置的环境变量的作用(web指南提供的demo里,host是SmartHost类型,本次实验可以直接把host配置为字符串格式更方便)。

同时也可以看到如何进行自定义业务逻辑的处理。

需要返回到请求端的数据赋给self.response.payload即可(为了方便处理,返回json格式)。

从调用组件API返回的结果中可以发现,除了在handle方法里赋给self.response.payload的数据外,还会多出2项:code和request_id(这里了解一下即可),可供组件API的调用端使用。

08.png


至此自定义组件的开发已完成,把开发好的组件放到ESB项目的components/generic/apis/下(默认在s/open_paas/src/esb/components/generic/apis下)
然后重启dashboard(默认:/data/paas/open_paas; ./bin/dashboard.sh restart esb)

接下来是手动添加自定义组件的通道。


4.  手动添加自定义组件的通道
4.1  创建手动接入组件需要的通道
在通道管理中新建通道
(1) 通道名称:任意,符合提示的要求即可
(2) 通道路径:/系统名/模块名/
(3) 所属组件系统:选择自定义组件myapp所在的系统名
(4) 对应组件代号:generic.系统名.模块名


09.png


4.2  接口API
保存后,在通道管理页面可以看到刚才创建的手动接入通道的API接口:
手动接入通道产生的API接口路径以/api/c/compapi开头(了解即可),稍后我们将使用这个接口访问前面自定义的组件


10.png


5. 访问测试
接下来使用POSTMAN访问这个接口,触发自定义组件handle方法中的处理逻辑并获取返回的数据:
app_code:paas平台开发者中心里创建的任意一个APP的APP_ID
app_secret:paas平台开发者中心里创建的APP的APP_TOKEN,需要与上面的APP_ID匹配
bk_token:可以在登录paas平台后通过浏览器插件获取,见后面截图

bk_token是访问组件接口API时认证所需要的,与当前访问PAAS平台的bk_token一致
app_code和app_secret从开发者中心创建的应用中任意选择一对即可(这个应用可以是实际不存在的,只要在我的应用中存在这个应用的记录即可)

这几个字段的获取方法参见下文截图。

11.png



app_code(APP_ID)和app_secret(APP_TOKEN)的获取:

12.png



bk_token的获取:

13.png


从前面的结果可以看到,自定义组件的手动接入,已经可以正常访问了。

6. 代码
(1) 参见: https://github.com/tjm-1990/blueking-esb

16

主题

1

好友

4995

积分

管理员

Rank: 48Rank: 48Rank: 48

发表于 2017-3-31 11:23:51 |显示全部楼层
官方确认,方法可行。感谢分享哦

蓝鲸官网

GMT+8, 2018-4-26 04:24

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部