Software Description
RuleGo
It is a language-based lightweight, high-performance, embedded rule engine. It is also a flexible configuration and highly customized event processing framework. Input messages can be filtered, transformed, enriched and various actions performed. Go
This project is heavily inspired by thingsboard . Refer to its rule chain idea, but make major adjustments in the architecture to meet the following scenarios:
- It has been greatly optimized in terms of resource occupation and performance, making it more suitable for edge computing scenarios.
- No downtime, no need to recompile, dynamically orchestrate business to meet highly customized and highly changing business needs.
- Non-intrusive embedding into existing projects.
- Provide more flexible interfaces and callback hooks.
- A more open component ecosystem. You can use the components provided by the community or encapsulate the business into components, and quickly and dynamically realize business requirements by building blocks.
characteristic
- Development language: Go 1.8
- Lightweight: no external middleware dependencies, and can efficiently process and link data in low-cost devices, suitable for IoT edge computing.
- High performance: Thanks to the high-performance features, it also adopts technologies such as coroutine pool and object pool. It takes 9 seconds on average to process 10W pieces of data .
Go
RuleGo
JS脚本过滤->JS脚本数据处理->HTTP推送
- Embedded: Supports embedding into existing projects, using its features non-intrusively.
RuleGo
- Componentization: All business logic is components, and they can be flexibly configured and reused.
- Rule chain: Different components can be flexibly combined and reused to realize highly customized and scalable business processes.
- Process orchestration: Supports dynamic orchestration of rule chains, you can encapsulate business into components, and then realize your highly changing business needs by building blocks.
RuleGo
- Simple extension: Provide rich and flexible extension interfaces and hooks, such as: custom components, component registration management, rule chain DSL parser, coroutine pool, rule node message inflow/outflow callback, rule chain processing end callback.
- Dynamic loading: supports dynamic loading of components and extension components.
Go plugin
- Built-in common components:
消息类型Switch
,JavaScript Switch
,JavaScript过滤器
,JavaScript转换器
,HTTP推送
,MQTT推送
,发送邮件
,日志记录
and other components. Other components can be extended by themselves. - Context isolation mechanism: Reliable context isolation mechanism, no need to worry about data streams under high concurrency.
Supported rule chain types:
Execute sequentially:
Asynchronous + sequential execution:
Use the subrule chain method:
Some complex examples:
Quick start: