赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 函数计算 FC 3.0
  4. 操作指南
  5. 触发器(云服务集成)
  6. 触发器高级功能

触发器高级功能

  • 触发器(云服务集成)
  • 发布于 2025-04-16
  • 0 次阅读
文档编辑
文档编辑

本文介绍触发器的高级系统功能。

使用说明

本文介绍的高级功能只适用于自定义事件源触发器,包括轻量消息队列(原 MNS)队列触发器、RocketMQ触发器、RabbitMQ触发器、Kafka触发器和DTS触发器。

调用方式

函数计算的触发器支持同步调用和异步调用两种调用方式。两种调用方式的限制如下所示。

调用模式

body大小

超时时间上限

同步调用

32 MB

5分钟

异步调用

128 KB

5分钟

推送配置

说明

批量推送需结合body大小限制决定是否减少聚合消息数。关于body大小限制,请参见调用方式。

批量推送

开启批量推送后,需设置批量推送条数和推量推送间隔。

  • 批量推送条数:一次调用函数发送的最大批量消息条数,当积压的消息数量到达设定值时才会发送请求。取值范围为[1,10000]。

  • 推量推送间隔:调用函数的时间间隔,系统每到间隔时间点会将消息聚合后发给函数计算。取值范围为[0,15],单位为秒。0秒表示无需等待,实时投递。

批量推送帮助您批量聚合多个事件,当批量推送条数和推量推送间隔两者条件满足其中一个时,触发函数执行,将请求消息批量推送到函数计算。

批量推送案例

  • 案例一

    您设置的批量推送条数为100条,每条消息大小为1 KB,推量推送间隔为15s。在10s内消息条数累积100条,则立即触发推送,无需等到15s再推送。

  • 案例二

    您设置的批量推送条数为100条,每条消息大小为1 KB,推量推送间隔为15s。在15s内消息积累50条,则立即触发推送,无需等待消息积累到100条后再推送。

  • 案例三

    您设置的批量推送条数为100条,每条消息大小为2 KB,推量推送间隔为15s,调用方式为异步调用。在10s内消息积累100条(消息累积大小100*2KB=200KB),达到异步调用body大小限制数,则立即触发推送,第一批聚合64条消息推送到函数计算,第二批聚合36条消息推送到函数计算。

推送格式

用于指定函数入口参数Event中每个数据元素的格式。

  • CloudEvents:以通用格式描述事件数据的规范,旨在简化不同服务和平台间的事件声明和传输。

  • RawData:只投递CloudEvents中数据字段的内容,不包含CloudEvents格式中的其它元数据信息。

以轻量消息队列(原 MNS)队列触发器为例,CloudEvents和RawData类型的Event格式如下。

CloudEvents

[
    {
    "id":"c2g71017-6f65-fhcf-a814-a396fc8d****",
    "source":"MNS-Function-mnstrigger",
    "specversion":"1.0",
    "type":"mns:Queue:SendMessage",
    "datacontenttype":"application/json; charset=utf-8",
    "subject":"acs:mns:cn-hangzhou:164901546557****:queues/zeus",
    "time":"2021-04-08T06:28:17.093Z",
    "aliyunaccountid":"164901546557****",
    "aliyunpublishtime":"2021-10-15T07:06:34.028Z",
    "aliyunoriginalaccountid":"164901546557****",
    "aliyuneventbusname":"MNS-Function-mnstrigger",
    "aliyunregionid":"cn-chengdu",
    "aliyunpublishaddr":"42.120.XX.XX",
    "data":{
        "requestId":"606EA3074344430D4C81****",
        "messageId":"C6DB60D1574661357FA227277445****",
        "messageBody":"TEST"
    }
    },
    {
    "id":"d2g71017-6f65-fhcf-a814-a396fc8d****",
    "source":"MNS-Function-mnstrigger",
    "specversion":"1.0",
    "type":"mns:Queue:SendMessage",
    "datacontenttype":"application/json; charset=utf-8",
    "subject":"acs:mns:cn-hangzhou:164901546557****:queues/zeus",
    "time":"2021-04-08T06:28:17.093Z",
    "aliyunaccountid":"164901546557****",
    "aliyunpublishtime":"2021-10-15T07:06:34.028Z",
    "aliyunoriginalaccountid":"164901546557****",
    "aliyuneventbusname":"MNS-Function-mnstrigger",
    "aliyunregionid":"cn-chengdu",
    "aliyunpublishaddr":"42.120.XX.XX",
    "data":{
        "requestId":"606EA3074344430D4C81****",
        "messageId":"C6DB60D1574661357FA227277445****",
        "messageBody":"TEST"
    }
    }
]

RawData

[
    {
        "requestId":"606EA3074344430D4C81****",
        "messageId":"C6DB60D1574661357FA227277445****",
        "messageBody":"TEST"
    },
    {
        "requestId":"606EA3074344430D4C81****",
        "messageId":"C6DB60D1574661357FA227277445****",
        "messageBody":"TEST"
    }
]

重试策略

函数请求在部分失败场景下,可按配置的重试策略进行重试。重试策略选项如下。

  • 退避重试:重试3次,每次重试的时间间隔为介于10s~20s的随机值。

  • 指数衰减重试:默认重试策略。重试176次,每次重试的时间间隔按照指数递增至512s,总计重试时间为24小时,即重试时间间隔为1s、2s、4s、8s、16s、32s、64s、128s、256s、512s……512s(共计167次间隔512s)。

触发重试的场景

  • 429错误:指请求被函数计算限流。限流是短暂的,因此会触发重试。

  • 5xx错误:指函数计算系统异常导致函数无法执行。

常见问题FAQ

Q:因函数实现问题引发的函数执行出错是否会触发执行重试策略?

A:同步调用方式,函数实现问题会触发重试策略。异步调用方式,函数实现问题不会触发重试策略,但是会触发异步调用重试策略。更多信息,请参见重试策略。

函数运行出错重试包含以下两种类型。

  • 可能重试成功

    无需执行重试策略,可以在函数内实现重试。

  • 不可能重试成功

    重试无意义,只会增加重试成本。

容错策略

当发生错误时是否选择容错。

  • 允许容错

    请求失败且重试失败后,跳过此请求,继续处理下一条请求。

  • 禁止容错

    请求失败且重试失败后,消费任务阻塞。

死信队列

仅当开启允许容错时,可配置死信队列。

  • 如果启用死信队列,未被处理或超过重试次数的消息会被投递到目标服务中。函数计算支持的目标服务包括轻量消息队列(原 MNS)、云消息队列 RocketMQ版、云消息队列 Kafka 版、事件总线EventBridge,您可以根据需求选择不同的队列类型。

  • 如果未启用死信队列,超过重试次数的消息会被丢弃。

说明

异步调用场景下,函数出现错误时,消息不会被投递到触发器的死信队列中,而是被投递到函数计算侧配置的异步调用目标服务。更多信息,请参见结果回调。

相关文章

触发器简介 2025-04-16 14:38

触发器是触发函数执行的方式。在事件驱动的计算模型中,事件源是事件的生产者,函数是事件的处理者,而触发器提供了一种集中、统一的方式来管理不同的事件源。在事件源中,当事件发生时,如果满足触发器定义的规则,事件源会自动调用触发器关联的函数。

触发器管理 2025-04-16 14:38

您可以在指定函数中创建触发器,使用触发器描述一组规则,当某个事件满足这些规则,事件源就会触发关联的函数。本文列举函数计算支持的所有触发器。

触发器Event格式 2025-04-16 14:38

函数计算每个类型的触发器,其event内容和结构都会根据触发事件的具体情况有所不同,函数在被调用时可以根据event中的信息来执行相应的业务逻辑处理。

触发器高级功能 2025-04-16 14:38

本文介绍触发器的高级系统功能。 使用说明 本文介绍的高级功能只适用于自定义事件源触发器,包括轻量消息队列(原 MNS)队列触

定时触发器 2025-04-16 14:38

定时触发器会根据您设置的特定时间点或周期性规则自动触发函数执行,为您提供灵活的任务调度能力,适合需要定期执行任务的应用场景。 使用场景 定时触发器的使用场景非常广泛,包括但不限于以下场景:

SLS触发器 2025-04-16 14:38

通过配置日志服务SLS触发器,您可以实现日志服务SLS与函数计算的集成。SLS触发器能够在新日志产

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号