百度消息服务触发器使用示例
概述
本文档介绍如何在云函数计算 CFC 中为函数配置百度消息服务触发器,包括编写处理函数、配置触发器,以及通过模拟测试和真实测试验证函数执行结果。
前提条件
- 已登录百度智能云管理控制台,并具备云函数计算 CFC 与百度消息服务的操作权限。
- 已创建用于绑定触发器的目标函数。
- 已准备可供监听的百度消息服务 Topic。## 百度消息服务触发器说明
百度消息服务是全兼容 Apache Kafka 的分布式、高可扩展、高通量的消息托管服务。
如果在百度消息服务的 Topic 上检测到记录,您可以使用 CFC 函数从此 Topic 读取成批的数据来处理,并且 CFC 会定期轮询(每秒一次)Topic 中的新纪录。
百度消息服务触发器创建
用户可以为新建的函数或已有函数配置百度消息服务触发器,创建函数的流程可以具体参考 从头创建函数,这里不再赘述。
这里假设您已经创建了一个目标函数,以下内容将引导您在 CFC 控制台的函数管理页面中为函数配置百度消息服务触发器。
编写处理函数
导航路径:产品服务->云函数计算 CFC->函数列表->目标函数->函数代码
步骤 1:进入目标函数详情页
在 【函数列表】 页面,点击目标函数名称,进入函数详情页。
步骤 2:编写并保存处理函数
点击 【函数代码】,保持 编辑类型 为 在线编辑,将编辑器中的示例代码替换为以下内容,并确认 处理程序 为 index.handler。完成后,点击 【保存】。
1# -*- coding: utf-8 -*-
2import base64
3
4def handler(event, context):
5 for record in event['Records']:
6 payload = base64.b64decode(record['Kafka']['Value'])
7 print("Decoded payload: " + payload.decode('utf-8'))
8 return 'Successfully processed {} records.'.format(len(event['Records']))
处理程序使用 index.handler,表示事件触发时会调用 index.py 中的 handler 方法。该处理函数会遍历 event['Records'],对每条 Kafka 消息的 Value 进行 Base64 解码,并返回本次处理的记录数。
百度消息服务触发器的 event 消息体结构如下:
1{
2 "Records": [
3 {
4 "EventId": "<事件唯一标识>",
5 "Kafka": {
6 "Key": "<Base64 编码后的消息键>",
7 "Value": "<Base64 编码后的消息值>",
8 "Topic": "<Topic 名称>",
9 "Partition": 0,
10 "Offset": 0,
11 "Timestamp": 0
12 },
13 "EventName": "bce:kafka:record",
14 "EventSourceBrn": "<事件源标识>",
15 "EventSource": "bce:kafka"
16 }
17 ]
18}
配置百度消息服务触发器
导航路径:产品服务->云函数计算 CFC->函数列表->目标函数->触发器
步骤 1:进入触发器配置页
1
2
3
在 【函数列表】 页面,点击目标函数名称进入函数详情页,再点击 【触发器】。

步骤 2:新增百度消息服务触发器
在触发器页面点击 【新增触发器】,在弹出框的 触发器 下拉框中选择 百度消息服务(kafka)触发器。
1
步骤 3:配置触发器参数并完成创建
1
测试触发器
模拟测试
导航路径:产品服务->云函数计算 CFC->函数列表->目标函数

步骤 1:打开测试事件窗口
在函数详情页,点击 【测试】,打开测试事件窗口。
步骤 2:输入测试事件并执行
在 【测试事件】 页签中,将编辑器中的默认内容替换为以下测试事件,然后点击 【执行】。
1{
2 "Records": [
3 {
4 "EventId": "<事件唯一标识-1>",
5 "Kafka": {
6 "Key": "",
7 "Value": "<Base64 编码后的消息值-1>",
8 "Topic": "<Topic 名称>",
9 "Partition": 0,
10 "Offset": 0,
11 "Timestamp": 0
12 },
13 "EventName": "bce:kafka:record",
14 "EventSourceBrn": "<事件源标识>",
15 "EventSource": "bce:kafka"
16 },
17 {
18 "EventId": "<事件唯一标识-2>",
19 "Kafka": {
20 "Key": "",
21 "Value": "<Base64 编码后的消息值-2>",
22 "Topic": "<Topic 名称>",
23 "Partition": 0,
24 "Offset": 1,
25 "Timestamp": 0
26 },
27 "EventName": "bce:kafka:record",
28
29 "EventSourceBrn": "<事件源标识>",
30
31
32### 真实测试
33
34导航路径:**产品服务->云函数计算 CFC->函数列表->目标函数**
35
36
37
38在添加好触发器之后,您可以按以下步骤进行真实测试。
39
40
评价此篇文章
