函数处理
functions
组件:执行自定义处理函数。用于轻量级自定义节点实现,让你的Golang自定义函数秒变组件。支持通过${metadataKey}方式从metadata动态获取函数名称值。
使用该组件之前必须使用以下方法注册自定义处理函数,默认框架不提供任何处理函数。
action.Functions.Register(functionName string, f func(ctx types.RuleContext, msg types.RuleMsg))
1
函数处理成功,必须使用以下方法通知规则引擎已成功处理:
//TellSuccess 通知规则引擎处理当前消息处理成功,并把消息通过`Success`关系发送到下一个节点
ctx.TellSuccess(msg RuleMsg)
//TellNext 使用指定的relationTypes,发送消息到下一个节点
ctx.TellNext(msg RuleMsg, relationTypes ...string)
1
2
3
4
2
3
4
如果消息处理失败函数,实现必须调用tellFailure方法:
//TellFailure 通知规则引擎处理当前消息处理失败,并把消息通过`Failure`关系发送到下一个节点
ctx.TellFailure(msg RuleMsg, err error)
1
2
2
- ctx:上下文
- msg:上一节点传入的msg
# 配置
字段 | 类型 | 说明 | 默认值 |
---|---|---|---|
functionName | string | 调用的函数名称。可以使用组件配置变量 动态指定函数名 | 无 |
# Relation Type
函数自定义
# 执行结果
函数自定义
# 配置示例
{
"id": "s1",
"type": "functions",
"name": "调用函数1",
"configuration": {
"functionName": "handleMsg"
}
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 应用示例
# config.Udf和functions自定义函数区别
- config.Udf :js脚本运行时调用的自定义函数,函数没固定参数和返回值。
- functions :
functions
节点通过配置函数名调用的自定义函数,函数必须是该类型:func(ctx types.RuleContext, msg types.RuleMsg)
。
在 GitHub 上编辑此页 (opens new window)
上次更新: 2024/10/30, 13:29:22