结果回调 函数计算接收异步调用请求后,将请求持久化后会立即返回响应,无需等待请求执行完成。如需要保留执行失败且超过最大重试次数被丢弃的请求,或通知下游异步调用结果,可以通过配置结果回调功能实现。配置异步目标服务后,异步调用请求执行完成,函数计算根据执行结果自动回调对应的服务。 功能原理 结果回调流程如下图所示。 适用场景 保存丢弃的事件供后续使用 当异步请求执行失败,并且按照指定的策略重试后仍然失败,函数计算将丢弃该请求。如果配置了失败目标,函数计算将自动把失败请求的上下文信息推送到另一个函数,执行自定义的错误处理逻辑。 自动通知下游服务执行结果 请求执行成功后,如果配置了成功目标,函数计算系统会自动将成功请求的上下文信息推送到下游目标服务。 支持的异步调用目标服务 当为函数配置了异步调用目标,并且异步调用后的结果符合条件时,函数计算会将请求上下文和数据推送至对应服务。可以针对不同函数、别名和版本配置不同的目标服务。目前支持的异步调用目标服务只有函数计算。 异步调用目标服务的配置说明如下: 异步调用目标的事件内容 函数计算作为函数异步调用目标时,事件内容示例如下。 bash { "timestamp": 1660120276975, "requestContext": { "requestId": "xxx", "host": "xxx.fchuadong1.ctyun.cn", "uri": "/abc/def", "approximateInvokeCount": 3 }, "requestPayload": "", "responseContext": { "statusCode": 200, }, "responsePayload": "" } 参数 说明 timestamp 调用时间戳。 requestContext 请求上下文。 requestContext.requestId 异步调用的请求ID。 requestContext.host 异步执行的函数域名。 requestContext.uri 异步执行的函数uri。 requestContext.approximateInvokeCount 异步调用的执行次数。当该值大于1时,说明函数计算对您的函数进行了重试。 requestPayload 请求函数的原始负载。 responseContext 返回上下文。 responseContext.statusCode 调用函数的返回码。 responsePayload 执行函数返回的原始负载。 避免循环调用 当您在配置异步执行目标时,请务必保证不要出现循环调用的情况。例如,您为函数A配置了成功调用时的异步目标为函数B,为函数B配置了成功调用时的异步目标为函数A。当您异步触发函数A并且执行成功后,则可能出现A到B,再到A的循环调用的情况。