赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 函数计算 FC 2.0
  4. 操作指南
  5. 事件触发
  6. 轻量消息队列(原 MNS)队列触发器

轻量消息队列(原 MNS)队列触发器

  • 事件触发
  • 发布于 2025-04-16
  • 0 次阅读
文档编辑
文档编辑

轻量消息队列(原 MNS)的队列(Queue)作为事件源通过事件总线EventBridge与函数计算集成后,通过轻量消息队列(原 MNS)队列触发器能够触发关联函数执行,通过函数可以对发布到轻量消息队列(原 MNS)队列中的消息进行自定义处理。本文介绍如何在函数计算控制台创建轻量消息队列(原 MNS)队列触发器、配置函数入口参数和编写代码并测试。

功能简介

您在函数计算的控制台提交触发器创建请求之后,函数计算会根据触发器的配置信息,自动创建与事件总线EventBridge相关的资源。目前提供事件模式和事件流模式两种消息推送模式,每个模式创建的资源如下:

  • 事件模式

    • 事件总线

    • 事件源

    • 事件规则

  • 事件流模式

    • 事件流

创建完成后,您可以在函数计算控制台查看触发器信息,同时也可以在事件总线EventBridge控制台查看自动创建的资源信息。当源轻量消息队列(原 MNS)队列中有消息入队时,将会触发函数计算执行,不同消息推送模式支持的参数内容也不同。

  • 事件模式:每次会将单个消息作为事件参数传入函数中,事件遵循CloudEvents规范。消息内容和CloudEvents的关系,请参见参数内容。

  • 事件流模式:根据您的攒批配置,将一个或多个消息事件以批的形式推送到函数中进行处理,适合端到端的流式数据处理场景。

注意事项

  • 作为触发源的轻量消息队列(原 MNS)队列必须和函数计算的函数所在的地域相同。

  • 创建的自定义总线以及事件规则的数量超过上限后,将无法再创建事件模式的轻量消息队列(原 MNS)队列触发器。

  • 创建的事件流数量超过上限后,将无法再创建事件流模式的轻量消息队列(原 MNS)队列触发器。

在单个阿里云账号单个地域维度下,关于创建触发器涉及的资源数量的限制,请参见使用限制。

前提条件

  • 事件总线EventBridge

    • 开通事件总线EventBridge并授权

  • 函数计算

    • 创建服务

    • 创建函数

  • 轻量消息队列(原 MNS)

    • 开通轻量消息队列(原 MNS)并授权

    • 创建队列

步骤一:创建触发器

  1. 登录函数计算控制台,在左侧导航栏,单击服务及函数。
  2. 在顶部菜单栏,选择地域,然后在服务列表页面,单击目标服务。
  3. 在函数管理页面,单击目标函数名称。

  4. 在函数详情页面,单击触发器管理页签,从版本或别名下拉列表选择要创建触发器的版本或别名,然后单击创建触发器。

  5. 在创建触发器面板,填写相关信息。然后单击确定。

    基础配置项说明如下所示。

    配置项

    操作

    本文示例

    触发器类型

    选择轻量消息队列(原 MNS)(队列触发)。

    轻量消息队列(原 MNS)

    名称

    填写自定义的触发器名称。

    mns-trigger

    版本或别名

    默认值为LATEST,如果您需要创建其他版本或别名的触发器,首先需要在函数详情页的右上角切换到该版本或别名。关于版本和别名的简介,请参见管理版本和管理别名。

    LATEST

    队列名称

    选择已创建的轻量消息队列(原 MNS)的队列。

    MyQueue

    调用方式

    选择函数调用方式。

    取值说明如下。

    • 同步调用:适用于顺序调用场景。单个(批)事件触发函数调用,等待函数执行完成返回结果后,再由下一个(批)事件继续触发函数调用。同步调用请求正文有效负载最大为32 MB。更多信息,请参见同步调用。

    • 异步调用:可以快速消费事件。单个(批)事件触发函数调用,函数计算会立刻返回响应,再由下一个(批)事件继续触发函数调用。该过程中函数会异步执行。异步调用请求正文有效负载最大为128 KB。更多信息,请参见异步调用。

    同步调用

    消息推送模式

    消息数据推送到函数计算时的底层应用模式。

    取值说明如下。

    • 事件流模式:会根据您的攒批配置将一个或多个消息事件以批的形式推送到函数中进行处理,适合端到端的流式数据处理场景。

    • 事件模式:每次会将单个消息作为事件参数传入函数中,事件遵循CloudEvents规范。消息内容和CloudEvents的关系,请参见步骤二:配置函数入口参数。

    事件模式

    触发器启用状态

    创建触发器后是否立即启用。默认勾选启用触发器,即创建触发器后立即启用触发器。

    不涉及

    关于推送配置、重试和死信等高级配置项说明,请参见触发器高级功能。

    创建完成后,在触发器名称列表中显示已创建的触发器。如需对创建的触发器进行修改或删除,具体操作,请参见触发器管理。

步骤二:配置函数入口参数

轻量消息队列(原 MNS)事件源会以event的形式作为输入参数传递给函数,您可以手动将event传给函数模拟触发事件,测试函数代码是否正确。

  1. 在函数详情页面,单击函数代码页签,然后单击测试函数右侧xialatubiao图标,从下拉列表中,选择配置测试参数。

  2. 在配置测试参数面板,选择创建新测试事件或编辑已有测试事件页签,填写事件名称和事件内容。然后单击确定。

    事件模式的event格式如下所示。

    {
        "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"
        }
    }

    事件流模式的event格式如下所示。

    [
        {
        "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"
        }
        }
    ]

    data字段包含的参数解释如下表所示。关于CloudEvents规范中定义的参数解释,请参见事件概述。

    参数类型示例值描述
    requestIdString606EA3074344430D4C81****请求ID。每个请求的ID取值唯一。
    messageIdStringC6DB60D1574661357FA227277445****消息ID。每条消息的ID取值唯一。
    messageBodyStringTEST消息内容。

步骤三:编写函数代码并测试

完成触发器创建后,您可以开始编写并测试函数代码,以验证代码的正确性。在实际操作过程中,当轻量消息队列(原 MNS)自定义事件源产生的事件通过事件总线EventBridge投递到函数计算时,触发器会自动触发函数的执行。

  1. 在函数详情页面,单击函数代码页签,在代码编辑器中编写代码,然后单击部署代码。

    本文以Node.js函数代码为例。

    'use strict';
    /*
    To enable the initializer feature
    please implement the initializer function as below:
    exports.initializer = (context, callback) => {
      console.log('initializing');
      callback(null, '');
    };
    */
    exports.handler = (event, context, callback) => {
      console.log("event: %s", event);
      //解析event参数,对event进行处理。
      callback(null, 'return result');
    }
  2. 单击函数代码页签的测试函数。

    执行完成后,您可以在函数代码页签的上方查看执行结果。

更多信息

如需对创建的触发器进行修改或删除,具体操作,请参见触发器管理。

相关文章

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

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

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

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

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

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

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

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

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

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

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

通过配置日志服务SLS触发器,您可以实现日志服务SLS与函数计算的集成。SLS触发器能够在新日志产生时自动触发函数执行,从而增量消费日志服务Logstore的数据,并完成自定义加工任务。

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