异步调用
更新时间:2024-07-05
概述
CFC目前支持以下两种调用方式:
- 同步调用:调用请求被函数处理之后会直接返回结果。例如,使用控制台调用、http触发器调用等
- 异步调用:调用事件在写入到函数计算内部队列后返回结果,函数计算系统会保证该消息被可靠地处理。目前,除了API调用外,CFC支持的异步调用方式包括:BOS触发器和定时任务触发器两种触发方式。
异步执行过程
当函数被异步调用时,CFC会将用户请求先写入内部的消息队列中,并返回异步调用结果,接下来,CFC会从内部消息队列中读取消息,触发函数调用,如果函数执行执行失败次数超限或触发事件等待超时,则会触发目标服务(如函数或topic)。
相关概念
- 重试次数 函数异步调用最大允许重试的次数。
- 最长保留时间 单次请求最长被允许在内部消息队列保留的时间。
- 目标服务 异步调用执行完成后,被调用的相关服务。
使用限制
- 最大重试次数限制为0-3。
- 最大超时时间限制为0-24小时。
- 目标服务为函数时,不能绑定函数本身。
- 支持函数执行成功或失败时触发目标服务,目标服务有且只有一个。
注意:目标服务为函数时,应避免循环调用,如函数A配置了成功调用时的异步目标为函数B,为函数B配置了成功调用时的异步目标为函数A,当异步调用触发函数A时且执行成功后,则可能出现A-->B-->A...循环调用的情况。
异步调用适用场景
- 不需要经常查看每个执行结果
- 任务量多且比较密集
- 存在服务调用关系
最典型的场景比如:利用Bos触发器接收到日志后需要进行日志批量处理。
异步调用配置
1.进入函数基本信息界面,打开异步策略配置
2.配置重试策略与异步执行目标
目前异步执行目标只支持CFC和kafka消息队列两种服务,当配置为其中的一种服务时
- CFC 当该次异步调用执行完成后,会根据满足的配置条件对配置的目标函数进行二次调用
- Kafka 当该次异步调用执行完成后,会将此次调用信息写入用户配置的消息队列中去