我们来继续学习如何在实战中使用 SAP Kyma.
Jerry 在之前的文章里,分别介绍了如何本地搭建 WordPress 实例:
什么?在 SAP 中国研究院里还需要会 PHP 开发?
以及如何把这个本地搭建的 WordPress 实例上的某些事件,发布到 SAP Kyma 上:
第三方应用如何在 SAP Kyma 上进行服务注册
本文继续这个集成场景的介绍,并完成最后一步:在 SAP Kyma 上编写 Lambda 函数,以响应从 WordPress 发送到 Kyma 的事件。响应函数的逻辑,出于演示目的,Jerry 简单地选择在 Kyma 上调用微信 API,把 WordPress 上发表的博客内容,直接转发给某个硬编码的微信用户,即 Jerry 自己的微信。
在按照前两篇文章的步骤做了之后,我们在 SAP Kyma 的服务目录 (Service Catalog) 下能看到从本地 WordPress 导入的服务(包含暴露的事件和 API),大家可以把这个服务目录简单类比成 SAP 云平台的 Service Market Place.
接下来,SAP Kyma 上的扩展开发人员,就可以基于这个服务开始工作了。
点击 Add once,创建一个新的 WordPress 服务实例:
然后创建一个新的 Lambda 函数:
Lambda 函数的实现类型选择 nodejs,
触发方式选择成 event trigger- 事件触发,具体的触发事件选择从 WordPress 导入的 post.published, 即文章发布事件。
也就是说,当 WordPress 里有新的博客发布时,WordPress 会触发 post.published 事件,增强后的 WordPress 插件会把这个事件,连同发布的博客内容作为参数一起传递给 Kyma,而 Kyma 会调用上述创建的监听在 post.published 事件上的 Lambda 函数,后者实际上就是观察者 - 发布者设计模式里的观察者。
接下来在 Lambda 函数里的开发就是纯粹的 nodejs 编程工作了,使用 nodejs 提供的 axios 库,将 WordPress 传递给 Kyma 的博客内容从事件参数 event 里解析出来,调用微信接口发送给指定的微信用户。
Dependencies 区域的作用,就相当于 nodejs 项目的 package.json, 用于定义 nodejs 代码执行所需的各种外部依赖。
最后一步,就是创建一个 Service Binding,把 Lambda 函数同之前创建的 WordPress 服务实例绑定起来。
这个操作和 SAP 云平台 CloudFoundry 环境里的服务配置做法是一致的,所以有过 SAP Cloud Platform 开发经验的程序员,对 SAP Kyma 上这些配置能够很容易上手。
至此,所有的开发和配置工作都结束了。
最后来做个测试。Jerry 最近看了 Craig Mazin 执笔,Johan Renck 执导,由 HBO/Sky 合拍的迷你剧《切尔诺贝利》,深感人类在核危机爆发后的渺小和无力。
在 WordPress 上发布一篇博客:
谎言的代价是什么?
并非是我们会把谎言误认为真相,
真正危险的是,
我们听多了谎言,便不能分辨出真相
单步调试 WordPress,发现发布博客的内容被发送到了指向 Kyma 事件处理的这个 url:
回到 Kyma 的 Lambda 界面,点击 Show Logs 查看日志,能发现 WordPress 发布的事件成功被 Kyma 的 Lambda 函数接收到了:
最后 Jerry 的微信号收到了这条在 WordPress 上首发,经 Kyma 中转的,关于《切尔诺贝利》观后感的博客:
下面是这个集成效果的演示视频:
可以持续关注本公众号,获得 SAP Kyma 的更多使用案例分享,感谢阅读。
这个场景用的到增强的 WordPress 源代码,以及 WordPress 的 Kyma 插件源代码,可以从 Jerry 的 github 上获得:
https://github.com/i042416/Wo…
更多阅读
- 站在巨人肩膀上的牛顿:Kubernetes 和 SAP Kyma
- 高射炮打蚊子,杀鸡用绝世好剑:在 SAP Kyma 上运行 UI5 应用
- 什么?在 SAP 中国研究院里还需要会 PHP 开发?
- 第三方应用如何在 SAP Kyma 上进行服务注册
- 基于 SAP Kyma 的订单编排增强介绍
要获取更多 Jerry 的原创文章,请关注公众号 ” 汪子熙 ”: