Features

Except core runtime and REST api, there are some features that are allowed to be enabled or disabled during compilation by go build constraints. Uses can customize the built binary to include only the desired features to reduce the binary size according to the limit of the target environment.

Feature List

Feature Build Tag Description
Core core The core of eKuiper. It contains the processor and REST API for stream/table/rule, the configuration processing, the SQL parser, the rule runtime etc.
CLI rpc The cli server
EdgeX Foundry integration edgex The built-in edgeX source, sink and connection
Native plugin plugin The native plugin runtime, REST API, CLI API etc.
Portable plugin portable The portable plugin runtime, REST API, CLI API etc.
External service service The external service runtime, REST API, CLI API etc.
UI Meta API ui The REST API of the metadata which is usually consumed by the ui
Prometheus Metrics prometheus Support to send metrics to prometheus
Extended template functions template Support additional data template function from sprig besides default go text/template functions
Codecs with schema schema Support schema registry and codecs with schema such as protobuf

Usage

In makefile, we already provide three feature sets: standard, edgeX and core. The standard feature set include all features in the list except edgeX; edgeX feature set include all features; And the core feature set is the minimal which only has core feature. Build these feature sets with default makefile:

  1. # standard
  2. make
  3. # EdgeX
  4. make build_with_edgex
  5. # core
  6. make build_core

Feature selection is useful in a limited resource target which is unlikely to run as docker container. So we only provide standard feature set in the docker images.

And users need to build from source to customize the feature sets. To build with the desired features:

  1. go build --tags "<FEATURE>"

For example, to build with core and native plugin support:

  1. go build --tags "core plugin"

Recommend updating the build command in the Makefile with tags and build from make.