Endpoint概述
Endpoint 是一个用来抽象不同输入源数据和路由的模块,针对不同协议提供一致的使用体验,它是RuleGo一个可选模块,能让RuleGo实现独立运行提供服务的能力。
它可以让你方便地创建和启动不同的接收服务,如http、mqtt、kafka、gRpc、websocket、schedule、tcp、udp等,实现对异构系统数据集成,然后根据不同的请求或消息,进行转换、处理、流转等操作,最终交给规则链或者组件处理。

Endpoint 架构图
# 为什么需要 Endpoint
没有 Endpoint 时,规则链是「被动」的:你必须在自己的代码里监听端口、订阅主题,收到数据后手动调用 ruleEngine.OnMsg(msg) 把消息喂给规则链。接入一种新协议,就要重写一遍这段胶水代码。
Endpoint 把这部分胶水代码标准化了:
- 声明式接入:在规则链 DSL 的
metadata.endpoints里配置「监听什么地址/主题、交给哪个链处理」,部署规则链即自动启动对应的接收服务,无需写任何监听代码 - 统一的路由模型:不同协议都抽象成
From(来源) → Process(处理) → To(目标)的路由器,会用 http endpoint 就会用所有 endpoint - 统一的消息封装:不管来源是 MQTT 消息还是 HTTP 请求,进入规则链的都是标准的
RuleMsg(负荷 + 元数据 + 消息类型),链上的组件无感知
# Endpoint 与规则链的关系
外部系统 Endpoint 模块 规则链
─────── ───────────────────────────── ─────────────────
MQTT Broker ──订阅主题──► ┐
HTTP 客户端 ──请求路径──► ├─ Router 路由匹配 ─► 转成 RuleMsg ─► 节点s1 → 节点s2 → ...
定时(cron) ──到点触发──► ┤
TCP/UDP ──报文到达──► ┘
1
2
3
4
5
6
2
3
4
5
6
- Endpoint 负责「收消息、触发链」;规则链负责「处理消息」
- 一个 Endpoint 可以包含多条路由(Router),不同路径/主题可以路由到不同的规则链
- 规则链也可以不配 Endpoint,继续作为被动引擎由代码或 REST API 触发
# 内置 Endpoint 类型
| 类型 | 用途 |
|---|---|
endpoint/rest | HTTP 服务,接收 REST 请求 |
endpoint/websocket | WebSocket 服务 |
endpoint/mqtt | 订阅 MQTT 主题 |
endpoint/kafka / nsq / pulsar / rabbitmq / nats / beanstalkd | 订阅各类消息队列 |
endpoint/schedule | cron 定时触发 |
endpoint/net / net client | TCP/UDP 服务端 / 客户端 |
endpoint/websocket client | WebSocket 客户端 |
endpoint/redisSub / redisStream | 订阅 Redis 频道 / 消费 Redis Stream |
endpoint/mysqlCdc | MySQL binlog 变更捕获 |
endpoint/opcua | OPC UA 订阅 |
endpoint/grpcStream | gRPC 流 |
各类型的配置项与完整示例见左侧边栏「组件」目录下对应的组件页。
# 学习路径
- 快速入门:用代码方式创建 endpoint、注册路由并启动
- Endpoint DSL:在规则链 JSON 里声明触发器(推荐方式)
- 路由:Router 的 From/Process/To 与跨链路由
- Options:全局与路由级选项(跨域、TLS、拦截器等)
在 GitHub 上编辑此页 (opens new window)
上次更新: 2026/09/12, 16:59:03