RuleGo v0.12.0 is officially released: a lightweight, high-performance, embedded business rule engine for the Go language

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:

Gitee

Github

 

Guess you like

Origin www.oschina.net/news/251323/rulego-0-12-0-released