配置函数流的异常处理控制器组件
当函数流里面的函数执行异常时,可以通过“异常处理”来处理执行失败的函数并可添加重试。函数执行失败可分为多种情况:函数执行异常;函数内部业务失败并在返回内容中添加了错误码,例如status,200代表成功,500和404等代表失败。
操作步骤
- 登录函数工作流控制台,左侧导航栏单击“函数流”。
- 单击“创建标准函数流”或“创建快速函数流”,进入新建函数流编排页面。
如果通过DWR侧创建的函数流,在console页面是没有编辑和删除权限,如需相关操作请在DWR侧执行。
- 在函数流编排区域,通过拖拽组件进行流程编排,各节点配置如下。
- 函数-input:从event取出input输入值,作为函数返回status的输出值;
- 异常处理:开启重试机制,当函数返回的status为500或404时进行重试,重试间隔1s,最大重试次数8次;
- 函数-异常记录:当经过8次重试函数返回的status依旧为500或404时,进行异常记录;
- 函数-正常输出:如果“函数-input”返回的status不为500或404时,执行“函数-正常输出”。
图1 异常处理函数流编排
- 配置异常处理,重试条件:$.status==500||$.status==404。
图2 配置异常处理
- 添加重试之后依旧失败的处理逻辑即“函数-异常记录”。函数参数配置说明请参见表1。
图3 配置异常分支
图4 配置异常处理
表1 函数参数说明 参数
说明
*应用
函数所属应用,用户创建函数时可以进行分组,每个函数应用下面可以创建多个函数,在函数创建时可以指定其归属于某个函数应用。
*函数
FunctionGraph中对应的函数。
说明:- 配置的函数节点返回的数据格式必须是json格式,否则会解析失败。
- 仅对于Go函数支持返回流式数据:在函数详情页的“设置 > 高级设置”下,打开“返回流式数据”开关即可。
*版本
FunctionGraph中函数对应的版本。
*调用方式
创建标准函数流时,需要配置此参数。函数流执行函数节点时的调用方式,默认为同步调用。
说明:- 同步调用不支持长时间函数,最大执行时长为15分钟
- 异步调用支持长时间函数,单函数节点的最大执行时长以函数服务支持的最大执行时长为准
函数参数
流程中以json格式作为body参数在执行时传入函数。
Key:填写参数
Value:填写参数值
DefaultValue:设置默认值,参数未获取到值时,默认获取默认值
操作:编辑或删除设置的参数
输入过滤表达式
基于上一个流程的json输出参数,可以使用JSONPath格式来选择性的过滤出当前流程的输入参数。
输出过滤表达式
基于当前流程的json输出参数,可以使用JSONPath格式来选择性的过滤出下一流程的输出参数。
开启容灾函数
开启后,当前节点名称不能与其他函数节点名称重复。
- 流程中的所有节点参数配置完成后,单击右上角的“保存”,进行参数配置,最后单击“确定”。
表2 配置信息 参数
说明
*名称
输入函数流名称。
*企业项目
选择企业项目。
*日志记录
创建快速函数流,保存时需要选择此参数。
- ALL:为所有事件启用日志记录。
- ERROR:仅启用错误日志记录。
- NONE:关闭日志记录。
合并参数
将上一个节点的输出与下一个节点的输入合并为输入。
支持返回流式数据
创建快速函数流时可配置此参数。开启后,函数流执行支持返回流式数据。可参见流式文件处理
说明:需函数流中函数节点的代码调用流式数据接口
描述
输入函数流的简要描述。
函数流中的节点改动后,必须先保存信息,再启动函数流任务。
- 保存成功后,单击“启动”,在弹出的启动执行页面,支持定义输入值或者直接启动。此处选择“定义输入值”。
{ "input":200 }
图5 启动执行配置
输入定义值必须是JSON格式的内容。
- 单击“开始执行”,页面右上角提示“启动函数流xxx成功”。
- 查看标准函数流或快速函数流执行结果请参见查看执行结果。
- 重新执行步骤7,此时“定义输入值”输入500,单击“开始执行”,异常处理逻辑会进行重试和记录。