

























English| 简体中文

RuleGo 是一个基于Go语言打造的轻量级、高性能、嵌入式、可编排组件式的规则引擎。
它可以帮助你快速实现松耦合、灵活可变的系统,实时响应和调整业务需求的变化。
RuleGo 还提供大量可复用的组件,支持数据聚合、分流、分发、转换、丰富和执行各种动作,还能与各种协议和系统进行交互和集成。 在低代码、业务编排、数据集成、工作流、大模型智能体、边缘计算、自动化、物联网等场景具有广泛的应用潜力。
RuleGo 嵌入到现有应用中。也可以独立部署为中间件,提供规则引擎和编排服务。消息类型切换、JavaScript Switch、JavaScript过滤器、JavaScript转换器、HTTP推送、MQTT推送、发送邮件、日志记录等。其他组件可按需扩展。HTTP Endpoint、MQTT Endpoint、TCP/UDP Endpoint、UDP Endpoint、Kafka Endpoint、Schedule Endpoint等。RuleGo 是一个可编排的规则引擎,擅长解耦你的系统。

RuleGo架构图

使用 go get 命令安装 RuleGo:
go get github.com/rulego/rulego
# 或
go get gitee.com/rulego/rulego
![]()
RuleGo 使用极其简单,只需3步:
使用JSON定义规则链:
导入RuleGo包并使用规则链定义创建规则引擎实例:
import "github.com/rulego/rulego"
//加载规则链定义文件
ruleFile := fs.LoadFile("chain_call_rest_api.json")
![]()
//定义消息metadata
metaData := types.NewMetadata()
metaData.PutValue("productType", "test01")
//定义消息payload和消息类型
msg := types.NewMsg(0, "TELEMETRY_MSG", types.JSON, metaData, "{\"temperature\":35}")
![]()
实时更新规则链逻辑而无需重启应用
//动态更新规则链逻辑
err := ruleEngine.ReloadSelf(ruleFile)
//更新规则链下某个节点
ruleEngine.ReloadChild("node01", nodeFile)
//获取规则链定义
ruleEngine.DSL()
![]()
//加载文件夹所有规则链定义到规则引擎池
rulego.Load("/rules", rulego.WithConfig(config))
//通过ID获取已经创建的规则引擎实例
ruleEngine, ok := rulego.Get("rule01")
![]()
//创建默认配置
config := rulego.NewConfig()
//调试节点回调函数,节点配置必须设置debugMode:true才会触发调用
//节点进入和离开信息都会回调该函数
config.OnDebug = func (chainId,flowType string, nodeId string, msg types.RuleMsg, relationType string, err error) {
}
![]()
RuleGo 的核心特性是组件化架构,所有业务逻辑都封装在组件中,可以灵活配置和复用。目前, RuleGo 已内置大量常用组件。
RuleGo 提供Endpoint模块,用于异构系统的统一数据接入与处理。详情参考:Endpoint
我们基于RuleGo提供了开箱即用的自动化工作流平台:RuleGo-Server , 以及前端可视化编辑器:RuleGo-Editor 。
RuleGo 在初始化阶段完成大部分工作,因此运行规则链几乎不会给系统增加额外开销,资源消耗极低,特别适合运行在边缘服务器上。 另外RuleGo使用有向无环图(DAG)来表示规则链,每个输入消息只需要沿着图中的路径进行处理,而不需要匹配所有规则,这大大提高了消息处理和路由的效率,同时也节省了系统资源。
性能测试用例:
机器:树莓派2 (900MHz Cortex-A7*4,1GB LPDDR2)
数据大小:260B
规则链:JS脚本过滤->JS复杂转换->HTTP推送
测试结果:100并发和500并发,内存消耗变化不大,在19M左右
![]()
欢迎任何形式的贡献,包括提交问题、建议、文档、测试或代码。贡献指南
RuleGo 使用Apache 2.0许可证,详情请参阅LICENSE文件。
邮箱:rulego@outlook.com
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。