链接:https://developers.sap.com/tutorials/cp-kyma-redis-function.html

本地文件:C:\Code\referenceCode\SAP Kyma教程例子\redis-function

包含一个 deployment 和两个 function:

函数1:cache-order

定义了三个依赖:

  • axios
  • redis
  • handy-redis

环境变量

这些环境变量的用法,在代码里使用 process.env 加上中括号引用。

cache-order 函数的三大主要逻辑:

(1)从 Kyma 传入的 event 结构里,获得 Commerce 创建订单的 ID.

(2) 根据订单 ID,调用函数 getOrderDetails,获得订单明细。

(3) 从订单明细里获得含税的价格,调用函数 cacheOrder,将价格存储到 Redis 里:

getOrderDetails 的实现:

async function getOrderDetails(orderCode) {const ordersUrl = `${COMM_GATEWAY_URL}/${process.env.SITE}/orders/${orderCode}`;console.log("Getting ordering details via: %s", ordersUrl, " for orderCode: ", orderCode);const response = await axios.get(ordersUrl);console.log(JSON.stringify(response.data, null, 2));return response.data;
}

代码里的 COMM_GATEWAY_URL 环境变量,在 Kyma 控制台里能够找到:

cacheOrder 的实现,调用 redis client hmset 方法:

resources

定义了 CPU 和内存的 quota,以及源代码:

这里的意思是,一旦应用 mp-commerce-mock 的 order.created 事件触发,会调用 cache-order 这个 function:

函数2:get-order

该函数的实现文件里,还定义了一个 APIRule:

部署之后如图:

定义了一个 gateway:
gateway: kyma-gateway.kyma-system.svc.cluster.local

从 Redis 里获取数据的源代码:

const hredis = require("handy-redis");const client = hredis.createNodeRedisClient({port:  process.env["REDIS_PORT"],host: process.env["REDIS_HOST"],password: process.env["REDIS_PASSWORD"]
});module.exports = { main: async function (event, context) {try {   const orderCode = event.extensions.request.query.orderCode;let result = await processGetRequest(orderCode);return result ? result : {"error": "orderCode was not found"};}catch(err) {console.log("an error occurred...", err);event.extensions.response.status(500).json({"error": err});}}
}async function processGetRequest(orderCode){    if(orderCode !== undefined){console.log("getting order from cache: ", orderCode);return client.hgetall(orderCode);}else{throw "No orderCode received!"}
}

关于如何测试这些 function,请参考 Jerry 这篇文章。

更多Jerry的原创文章,尽在:“汪子熙”:

在 SAP Kyma 上使用 Redis 服务相关推荐

  1. 高射炮打蚊子,杀鸡用绝世好剑:在SAP Kyma上运行UI5应用

    国人在表述"大材小用"这个场景时,总喜欢用一些实物来类比,比如:高射炮打蚊子. 英国QF 3.7英寸(94mm)高射炮,战斗全重超过9.3吨,全长近5米,最大射程约18公里,最大射 ...

  2. 使用SAP Leonardo上的机器学习服务提取图片的特征向量

    要想提取图片的特征向量,首先得知道特征向量是什么. 我们假设这样一个服务场景,技师上门维修某设备,发现上面某零件损坏了,假设这位技师由于种种原因,没能根据自己的经验识别出这个零件的型号.此时技师掏出自 ...

  3. SAP Kyma上创建的Lambda function背后的技术实现

    在SAP Kyma上创建一个新的Lambda function: 会自动生成一个同名加后缀的pod: 该pod的日志文件位置: 一个同名service: 一个replica Set: 一个deploy ...

  4. 项目部署—连接不上远程redis服务怎么办?

    问题: 近日,在阿里云远程服务器上安装了redis,但发现连接不上远程redis服务 亦或者是 报Could not get a resource from the pool错误. 原因: 出现这种情 ...

  5. 第三方应用如何在SAP Kyma上进行服务注册

    Jerry之前的公众号文章 什么?在SAP中国研究院里还需要会PHP开发?提到了一个SAP Kyma的应用场景: 旅行兼社交达人伊森,使用经过SAP Kyma扩展之后的WordPress这个网站来写博 ...

  6. 在 SAP Kyma 上部署一个 Go MSSQL API Endpoint

    链接:https://developers.sap.com/tutorials/cp-kyma-api-mssql-golang.html 本地文件:C:\Code\referenceCode\SAP ...

  7. 运行在 SAP Kyma 上一个 pod 的明细信息

    使用下列命令行返回 pod 明细: Node: shoot–kyma–c-46d70f2-cpu-worker-0-z2-56f59-vh6fw/10.250.0.4 - Kubernetes 工作节 ...

  8. SAP Kyma上都有哪些namespace?

    用命令行kubectl get namespaces查看: NAME STATUS AGE cx-garage Active 10d default Active 10d istio-system A ...

  9. Redis Desktop Manager连不上虚拟机redis服务完美解决

    1.检查虚拟机防火墙中redis默认端口6379是否打开[重要] firewall-cmd --query-port=6379/tcp   如果返回no则端口没有开启 firewall-cmd --a ...

最新文章

  1. Skia的SkCamera.cpp的doUpdate() 算法。
  2. 从物联网设备生命周期理解Apple Homekit框架
  3. Hadoop For Windows
  4. 【杂谈】有三AI知识星球一周年了!为什么公众号+星球才是完整的?
  5. express-partials与express4.x不兼容问题
  6. 最优化理论与方法(part4)--秩一校正
  7. linux下makefile中cp,make与makefile 的理解
  8. 应用数学软件测试题,高等数学第六章定积分应用综合测试题
  9. 罗海雄:仅仅使用AWR做报告? 性能优化还未入门(含PPT)
  10. java 控制语句_java两个控制语句(转)
  11. 飞冰:Iceworks 自定义模板支持布局定制(v2.3.0 版本)
  12. 【三维路径规划】基于matlab自适应遗传算法求解单无人机三维路径规划问题【含Matlab源码 214期】
  13. c# rar压缩解压缩
  14. 服务器启动显示fr 01,X3850X5服务器无法开机故障处理_微码升级.docx
  15. 手机TF 卡 无法读取,提示需要格式化
  16. 14年macmini装双硬盘_苹果2014款Mac mini更换固态硬盘图文教程
  17. 【软件工具】软件测试
  18. STM32 之十 供电系统及内部参照电压(VREFINT)使用及改善ADC参考电压,内部参照电压的具体方法,只有在STM32F0x芯片的参考手册中才能找到,其他MCU的参考手册都是很简单的说明
  19. 光流传感器 定位精度_基于多传感器的无人机定位和避障技术研究
  20. ParameterResolutionException单元测试方法中添加了参数,这是不允许的

热门文章

  1. 《R语言数据挖掘》----1.15 结果可视化
  2. 这个女人,败得很漂亮!看后有感!
  3. max_connect_errors 疏忽
  4. a programmer should know...
  5. ASP.NET和C#中对XML的操作,以及简单的xml与xsl !
  6. redis 系列26 Cluster高可用 (1)
  7. kubernetes --- Glusterfs
  8. python-configparser模块
  9. Redis4.0 Cluster — Centos7
  10. Python全栈开发:configparser模块