在 SAP Kyma 上使用 Redis 服务
链接: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 服务相关推荐
- 高射炮打蚊子,杀鸡用绝世好剑:在SAP Kyma上运行UI5应用
国人在表述"大材小用"这个场景时,总喜欢用一些实物来类比,比如:高射炮打蚊子. 英国QF 3.7英寸(94mm)高射炮,战斗全重超过9.3吨,全长近5米,最大射程约18公里,最大射 ...
- 使用SAP Leonardo上的机器学习服务提取图片的特征向量
要想提取图片的特征向量,首先得知道特征向量是什么. 我们假设这样一个服务场景,技师上门维修某设备,发现上面某零件损坏了,假设这位技师由于种种原因,没能根据自己的经验识别出这个零件的型号.此时技师掏出自 ...
- SAP Kyma上创建的Lambda function背后的技术实现
在SAP Kyma上创建一个新的Lambda function: 会自动生成一个同名加后缀的pod: 该pod的日志文件位置: 一个同名service: 一个replica Set: 一个deploy ...
- 项目部署—连接不上远程redis服务怎么办?
问题: 近日,在阿里云远程服务器上安装了redis,但发现连接不上远程redis服务 亦或者是 报Could not get a resource from the pool错误. 原因: 出现这种情 ...
- 第三方应用如何在SAP Kyma上进行服务注册
Jerry之前的公众号文章 什么?在SAP中国研究院里还需要会PHP开发?提到了一个SAP Kyma的应用场景: 旅行兼社交达人伊森,使用经过SAP Kyma扩展之后的WordPress这个网站来写博 ...
- 在 SAP Kyma 上部署一个 Go MSSQL API Endpoint
链接:https://developers.sap.com/tutorials/cp-kyma-api-mssql-golang.html 本地文件:C:\Code\referenceCode\SAP ...
- 运行在 SAP Kyma 上一个 pod 的明细信息
使用下列命令行返回 pod 明细: Node: shoot–kyma–c-46d70f2-cpu-worker-0-z2-56f59-vh6fw/10.250.0.4 - Kubernetes 工作节 ...
- SAP Kyma上都有哪些namespace?
用命令行kubectl get namespaces查看: NAME STATUS AGE cx-garage Active 10d default Active 10d istio-system A ...
- Redis Desktop Manager连不上虚拟机redis服务完美解决
1.检查虚拟机防火墙中redis默认端口6379是否打开[重要] firewall-cmd --query-port=6379/tcp 如果返回no则端口没有开启 firewall-cmd --a ...
最新文章
- Skia的SkCamera.cpp的doUpdate() 算法。
- 从物联网设备生命周期理解Apple Homekit框架
- Hadoop For Windows
- 【杂谈】有三AI知识星球一周年了!为什么公众号+星球才是完整的?
- express-partials与express4.x不兼容问题
- 最优化理论与方法(part4)--秩一校正
- linux下makefile中cp,make与makefile 的理解
- 应用数学软件测试题,高等数学第六章定积分应用综合测试题
- 罗海雄:仅仅使用AWR做报告? 性能优化还未入门(含PPT)
- java 控制语句_java两个控制语句(转)
- 飞冰:Iceworks 自定义模板支持布局定制(v2.3.0 版本)
- 【三维路径规划】基于matlab自适应遗传算法求解单无人机三维路径规划问题【含Matlab源码 214期】
- c# rar压缩解压缩
- 服务器启动显示fr 01,X3850X5服务器无法开机故障处理_微码升级.docx
- 手机TF 卡 无法读取,提示需要格式化
- 14年macmini装双硬盘_苹果2014款Mac mini更换固态硬盘图文教程
- 【软件工具】软件测试
- STM32 之十 供电系统及内部参照电压(VREFINT)使用及改善ADC参考电压,内部参照电压的具体方法,只有在STM32F0x芯片的参考手册中才能找到,其他MCU的参考手册都是很简单的说明
- 光流传感器 定位精度_基于多传感器的无人机定位和避障技术研究
- ParameterResolutionException单元测试方法中添加了参数,这是不允许的
热门文章
- 《R语言数据挖掘》----1.15 结果可视化
- 这个女人,败得很漂亮!看后有感!
- max_connect_errors 疏忽
- a programmer should know...
- ASP.NET和C#中对XML的操作,以及简单的xml与xsl !
- redis 系列26 Cluster高可用 (1)
- kubernetes --- Glusterfs
- python-configparser模块
- Redis4.0 Cluster — Centos7
- Python全栈开发:configparser模块