乐趣区

关于sap:在-SAP-BTP-Kyma-Runtime-上使用-Redis-读取和存储数据

https://developers.sap.com/tu…

This sample provides a Redis deployment and two serverless functions that interact with it.

这个例子提供了一个 Redis 利用部署和两个应用 Redis 的 serverless 函数。

The function cache-order will be set to subscribe to an order.created event provided by the Commerce mock application.

Commerce Mock 利用有一个 order.created 事件,cache-order 函数订阅这个事件。

Once triggered, the function will perform an API call to the Commerce mock to obtain additional details regarding the order and then cache the information into Redis.

一旦 order.created 事件触发,cache-order 函数响应该事件,调用一个 Commerce Mock API,读取创立订单的更多明细,而后将数据存储到 Redis 里。

The function get-order, exposed as an API, is used to then retrieve the order details from the Redis cache.

函数 get-order, 以 API 的模式裸露,负责从 Redis cache 里读取订单明细。

从这个 Github 仓库里下载 sample 代码。

进入 Kyma 控制台,点击 Create Binding:

In this step, you will bind the Commerce Mock application to the dev namespace. This will allow the APIs and Events of the mock application to be used within the namespace.

这一步会将 Commerce Mock 利用同 dev 命名空间绑定在一起,这使得 Mock 利用的 API 和 Events 可能在 dev 命名空间内被应用。

点击 Create:

Create the Events service instances – 创立事件服务实例

In this step, you will create service instances of the Events the Commerce Mock application exposes. This will allow the events to be consumed from resources within the namespaces such as functions or microservices.

创立 Commerce Mock 利用裸露的事件的服务实例。这样,dev 命名空间下的资源,比方 functions 和 microservices 就可能生产这些事件。

抉择 commerce-mock:

抉择 SAP Commerce Cloud – Events:

点击 Add 按钮,创立一个 Service 实例:

创立好的 service 实例:

Step 4: Create API service instances

In this step, you will create a service instance of the Commerce Webservices the Mock application exposes.

Mock Application 裸露的 Commerce Web Service, 能够基于其创立服务实例。该服务实例可能将 API 裸露给同一命名空间下的其余资源,比方函数和微服务。

查看两个胜利创立的服务实例:

下一步,部署三个资源到 Kyma 上:

  1. cache-order: This function will subscribe to an event published by the Commerce mock application. Once triggered, it will call back to the Commerce mock application to obtain the totalPriceWithTax and then cache the information into Redis.

该函数订阅 Commerce Mock Application 裸露的 order.created 事件。该事件产生后,cache-order 函数调用 Commerce mock Application,取得 totalPriceWithTax, 而后存储到 Redis 去。

  1. get-order: This function will be exposed as an API allowing retrieval of data stored within the Redis cache.

Redis cache 里通过 cache-order 存储的订单信息,通过 get-order 裸露给消费者。

  1. redis-deployment: This deployment defines the Redis cache configuration and the associated Kubernetes service which exposes the Redis instance to the two Serverless functions.

这个 deployment 定义了 Redis cache 配置信息,以及关联的 Kubernetes Service, 后者将 Redis 实例裸露给 (1)(2) 两个 serverless 函数应用。

顺次将 k8s 文件夹下的 yaml 文件进行部署:

确保 deployment 状态全副为 Running:

Add event subscription to function

In this step, you will configure the function cache-order, deployed in the previous step, to run when the order.created event is fired from the Commerce Mock application.

这一步,将 cache-order 订阅到 order.created 事件上。

从 functions 列表里找到 cache-order:

创立一个事件订阅 Event subscription:

cache-order function 须要调用对应的 API,因而须要为其创立 service binding.

通过这个 Service Binding,就能够借助该 Service Instance,调用 Commerce Webservice 了:

对 function 代码进行微调

找到环境变量里蕴含 GATEWAY_URL 的变量:

点击 commerce-mock 的 host 超链接,手动触发一个 order.created 事件。

点击 Remote API:

找到 SAP Commerce Cloud – Events:

点击按钮 Send Event,模仿发送一个 order.created 事件,payload 里蕴含的 orderCode 为 76270000:

事件胜利发送:

在 cache-order 的 logs 面板里,果然看到了订单 code 76270000 对应的解决日志:

下一步,再试试 get-order 函数,是否可能从 Redis cache 中读取订单信息。

点击这个超链接:https://get-order.c-46d70f2.k…

会收到如下谬误音讯:”error”: “No orderCode received!”

这是因为咱们尚未为该 serverless function 指定 orderCode.

试试在 url 后手动加上 orderCode:

https://get-order.c-46d70f2.k…

当初就可能失常工作了。

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

退出移动版