
rulego
用 Go 规则链编排组件,轻松搭建自动化数据流
RuleGo 是一个用 Go 编写的轻量级、高性能、可嵌入的组件编排规则引擎框架,面向自动化工作流与数据流场景。它把业务逻辑拆成可复用的组件,通过规则链(Rule Chain)把组件按顺序或条件连接起来,实现消息路由、过滤、转换、聚合等处理。核心能力包括:基于 Go 原生并发模型的高吞吐执行、支持热加载与动态更新规则、内置大量通用组件(如 MQTT、HTTP、Kafka、数据库、AI 调用等),并兼容 MCP 协议,可作为 MCP 客户端或服务端使用。它解决的是传统硬编码流程难以灵活调整、低代码平台又过于笨重的问题,让开发者用少量配置就能搭建 IoT、边缘计算、iPaaS、数据管道等场景的自动化流程,同时保持极低资源占用和嵌入式部署能力。
项目数据
使用教程
环境要求
- 本机已安装 Go 语言环境,可正常执行 go 命令
- 一个使用 Go Modules 的 Go 项目(用于嵌入 RuleGo)
- 能访问 GitHub 拉取 github.com/rulego/rulego 依赖(网络通畅或已配置模块代理)
- 一个可用的规则链 JSON 定义文件(可参考 README 中的示例)
安装与启动步骤
-
1初始化 Go 项目
在项目目录下初始化 Go 模块,已有 go.mod 的项目可跳过这一步,直接执行依赖安装。
go mod init example.com/myapp -
2拉取 RuleGo 依赖
README 给出的唯一安装命令,使用 go get 把 RuleGo 作为库引入当前项目。
go get github.com/rulego/rulego -
3准备规则链 JSON
用 JSON 定义规则链 DSL,描述组件及连接关系;可参考示例文件 chain_call_rest_api.json 和官方 DSL 文档。
-
4创建规则引擎实例
导入 rulego 包,加载规则链文件,并用唯一 ID 创建规则引擎实例,注意处理返回的 err。
import "github.com/rulego/rulego" // 加载规则链定义文件 ruleFile := fs.LoadFile("chain_call_rest_api.json") // 使用规则链定义创建规则引擎实例 ruleEngine, err := rulego.New("rule01", ruleFile) -
5提交消息处理
构造元数据、消息负载与消息类型,交给规则引擎,它会按规则链定义自动处理。
// 定义消息元数据 metaData := types.NewMetadata() metaData.PutValue("productType", "test01") // 定义消息负载和消息类型 msg := types.NewMsg(0, "TELEMETRY_MSG", types.JSON, metaData, "{"temperature":35}") // 把消息交给规则引擎处理 ruleEngine.OnMsg(msg)
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
规则链定义文件 | 是 | JSON 格式的规则链 DSL,定义组件及其连接顺序与条件 | chain_call_rest_api.json |
规则引擎实例 ID | 是 | 创建实例时的唯一标识,用于加载与更新对应规则链 | rule01 |
消息类型 | 是 | 提交消息时指定的类型,供规则链中组件按类型匹配处理 | TELEMETRY_MSG |
消息元数据 metaData | 否 | 附加在消息上的键值对,供规则链内组件读取使用 | productType=test01 |
如何确认成功
调用 ruleEngine.OnMsg(msg) 无报错,且规则链中的下游组件按定义收到并处理了该消息,即表示运行成功。
常见问题
Q:如何更新规则链逻辑而不重启应用?
A:README 明确说明支持规则链逻辑的实时更新,无需重启应用,即可以在运行中动态替换规则链定义。
Q:规则链 JSON 该怎么写?
A:按 Rule Chain DSL 编写,README 给出文档地址 https://rulego.cc/en/pages/rule-chain/ 和示例 testdata/rule/chain_call_rest_api.json。
Q:RuleGo 需要额外的中间件吗?
A:不需要外部中间件依赖,属于轻量级设计,可在低成本设备上运行,也适合 IoT 边缘计算场景。
Q:go get 拉取失败怎么办?
A:README 未给出处理方式,通常是网络或 Go 模块代理配置问题,请检查网络连通性与 GOPROXY 设置。
Q:对 Go 版本有要求吗?
A:README 只说明基于 Go 语言编写并使用 go get 安装,未给出具体版本要求,请以官网文档为准。
注意事项
- README 只提供了 go get 这一条安装命令,项目以库形式嵌入使用,没有给出独立部署的命令行或 Docker 命令。
- 支持嵌入现有应用(Embedded)和独立部署(Standalone)两种模式,Standalone 模式可对外提供规则引擎与编排服务。
- 内置大量通用组件,并兼容 MCP 协议,可作为 MCP 客户端或服务端使用。
- 规则链运行示例可参考官方演示地址 http://8.134.32.225:9090/ui/ 与官网 https://rulego.cc。
核心亮点
- 轻量可嵌入,无外部依赖,适合边缘和 IoT 设备部署
- 规则链支持热更新,无需重启即可调整业务逻辑
- 内置 MCP 协议支持,可快速接入 AI 工具与模型
不足之处
- 生态和社区规模相比 n8n、Node-RED 仍较小
- 可视化编排和调试工具相对薄弱,复杂规则链维护成本较高
适用场景
- IoT 边缘设备数据采集、过滤与转发
- 企业 iPaaS 集成,连接多个系统与消息队列
- AI 工作流编排,通过 MCP 调用模型与工具
替代项目
n8n、Node-RED、Apache NiFi
项目介绍
同类项目推荐
n8n
开源
拖拽搭建自动化流程,轻松接入 AI 与 400+ 应用,搞定重复工作。
Fair-code workflow automation platform with native AI capabilities. Combine visual b···
robotcode
开源
让 Robot Framework 拥有现代 IDE 体验,调试、补全、运行一气呵成。
Open Source Toolkit for Robot Framework, providing Language Server Protocol support,···
puppeteer
开源
用 JavaScript 轻松操控无头浏览器,搞定自动化测试与网页抓取。
JavaScript API for Chrome and Firefox
customermates
开源
比 Pipedrive 直观 10 倍的现代开源 CRM,轻松管理客户与自动化流程。
Building a modern alternative to Pipedrive that is 10x more intuitive.