You need to enable JavaScript to run this app.
导航
创建 RocketMQ 触发器
最近更新时间:2024.06.05 21:10:09首次发布时间:2022.08.26 16:54:48

函数服务支持对接火山引擎的 消息队列 RocketMQ 版。 通过创建 RocketMQ 触发器,函数服务将作为消费者消费 RocketMQ 中的消息,并将消息传递给用户函数,触发函数代码逻辑。您无需关心函数服务消费消息的细节,只需编写处理消息的函数。本文为您介绍如何创建 RocketMQ 触发器。

前提条件

  • 函数已开启 VPC 访问功能,要求函数与待消费的 RocketMQ 实例处于同一 VPC 下。 详细操作可参见 函数配置

  • 函数开启或修改 VPC 访问配置后,需重新完成全量发布。详细操作可参见 发布函数

  • 已创建 RocketMQ 实例、 Topic、Consumer Group 及访问密钥。其中,访问密钥为消息队列 RocketMQ ACL 权限控制的密钥,必须包含订阅权限。详细操作可参见 RocketMQ 快速入门

使用限制

  • 每个函数最多支持创建 20 个触发器。
  • RocketMQ 实例和函数必须处于同一 VPC 下。
  • 若需要修改函数的 VPC 或子网,必须先停用或删除所有的 MQ 触发器。
  • RocketMQ 触发器创建成功后,不支持变更 RocketMQ 实例、 Topic 及 Consumer Group。

操作步骤

  1. 登录 函数服务控制台

  2. 在顶部导航栏,选择目标地域。

  3. 在 函数列表 页面,选择需要创建触发器的函数,单击函数名称。

  4. 在函数详情页面的 触发器 页签下,单击 创建触发器

  5. 在 创建触发器 面板,按要求设置参数。
    alt

    配置项说明
    触发器类型本场景选择 RocketMQ 触发器。
    触发器名称自定义触发器名称。同一函数下,触发器名称不可重复。触发器名称创建成功后不支持修改。

    实例

    实例,即 RocketMQ 实例,函数服务将扮演指定的 Consumer Group 角色,去消费指定 RocketMQ 实例下指定 Topic 中的消息。请选择前提条件中准备好的 RocketMQ 实例、Topic、Consumer Group。

    • Topic:消息主题,表示一类消息的集合,是消息队列 RocketMQ 版进行消息订阅的基本单位。
    • Consumer Group:消费组,是一组具有相同 Group ID 的消费者。通过消费组,可以确保一个 Topic 中的消息被并行消费。

    说明

    • 仅支持选择与函数处于同一 VPC 下的 RocketMQ 实例。
    • 为保证触发器能消费 Topic 全量消息,建议一个 Consumer Group 唯一对应一个触发器。
    • Consumer Group 从 Topic 最新位置开始消费。
    重试次数函数发生运行错误(包括用户代码错误和 Runtime 错误)时的最大重试次数。

    消息顺序

    选择是否严格按照消息的发布顺序进行消费,请根据业务需要进行选择。

    • 消息有序:严格保证所有消息按照生产者投递的顺序(即先入先出,FIFO)进行消费。
    • 消息无序:不会严格遵循先进先出的原则进行消费,适用于消息顺序不重要的场景。
    立即启用是否在创建触发器的同时启用触发器。只有处于启用状态的触发器才能够正常工作。

    身份认证

    输入前提条件中准备好的访问 RocketMQ 实例的访问密钥 AccessKey ID 和 AccessKey Secret。访问密钥仅用于消息订阅鉴权,函数服务不会存储您的访问密钥。

    注意

    • 访问密钥为消息队列 RocketMQ ACL 权限控制的密钥,非火山引擎账号的密钥。
    • 访问密钥需包含订阅权限。
    备注根据需要输入备注信息。
  6. 单击 确定,开始创建 RocketMQ 触发器。

    说明

    创建过程可能需要 1 ~ 2 分钟,请耐心等待。创建成功后,可在消息队列 RocketMQ 版控制台查询到对应的 Consumer 客户端信息。

结果验证

  • 函数服务控制台
    可在当前函数的 触发器 页签下查看到刚刚创建的 RMQ 触发器信息。
    alt
  • 消息队列 RocketMQ 版控制台
    可在对应 RMQ 实例的对应 Consumer Group 详情下,查看到新增的 Consumer 客户端信息。此客户端即为当前函数。

    说明

    状态同步可能有分钟级别延迟,请耐心等待。

    alt

后续操作