在 TypeScript、Python 和 Rust 中向 iii 引擎注册函数与触发器。在创建 worker、注册函数处理器、绑定触发器时使用……
函数和触发器是一项面向实际任务的技能,主要用于比较到: 无服务器函数运行时间、 Lambda、 Cloud 函数;当符合任务时使用下面的概念;
使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
类比于:无服务器函数运行时、Lambda、Cloud Functions
请根据实际任务需要,选择性使用以下概念。并非每个 Worker 都需用到全部特性。
http、durable:subscriber、cron、state、stream 和 subscribetrigger() 调用其他函数,不受编程语言或 Worker 所在位置限制schemars::JsonSchema)、Python(通过类型提示 / Pydantic)中生成;Node.js 中则需手动提供registerWorker() 将 Worker 连接到引擎,registerFunction 定义处理器,registerTrigger 将事件源绑定至对应处理器,引擎负责将入站事件路由至正确的函数。函数可通过 trigger() 跨 Worker、跨语言调用其他函数。
| 原语 | 用途 |
|---|---|
registerWorker(url, options?) |
将 Worker 连接到引擎 |
registerFunction(id, handler) |
定义函数处理器 |
registerTrigger({ type, function_id, config, metadata? }) |
将事件源绑定至函数 |
trigger({ function_id, payload }) |
同步调用函数 |
trigger({ ..., action: TriggerAction.Void() }) |
即发即弃(fire-and-forget)调用 |
trigger({ ..., action: TriggerAction.Enqueue({ queue }) }) |
通过队列实现持久化异步调用 |
各参考实现均以对应语言展示了相同模式:函数注册、触发器绑定、跨函数调用。
采用该模式的代码通常包含(视具体场景而定):
registerWorker('ws://localhost:49134', { workerName: 'my-worker' }) — 连接引擎registerFunction('namespace::name', async (input) => { ... }) — 注册处理器registerTrigger({ type: 'http', function_id, config: { api_path, http_method, middleware_function_ids? } }) — HTTP 触发器(支持可选中间件)registerTrigger({ type: 'durable:subscriber', function_id, config: { topic } }) — 队列触发器registerTrigger({ type: 'cron', function_id, config: { expression } }) — Cron 触发器registerTrigger({ type: 'state', function_id, config: { scope, key } }) — 状态变更触发器registerTrigger({ type: 'stream', function_id, config: { stream } }) — 流触发器registerTrigger({ type: 'subscribe', function_id, config: { topic } }) — Pub/Sub 订阅者registerTrigger({ ..., metadata: { owner: 'team', priority: 'high' } }) — 可选触发器元数据函数可声明其输入/输出 Schema,用于文档生成与服务发现:
schemars::JsonSchema trait — RegisterFunction::new() 会基于该类型自动生成 JSON Schema(Draft 7)register_function() 自动提取 JSON Schema(Draft 2020-12)request_format / response_format(例如通过 Zod 的 toJSONSchema() 方法)当以下适配项适用于当前任务时,请采用相应调整。
namespace::name 命名约定为函数 ID 分组,便于组织相关函数api_path 和 http_methodTriggerAction.Enqueue({ queue }) 替代同步调用TriggerAction.Void()iii-http-endpoints。iii-queue-processing。iii-cron-scheduling。iii-trigger-actions。iii-functions-and-triggers。iii-functions-and-triggers 展开时,应使用本技能。相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 133.7万人学习
共49课时 | 82.4万人学习