Features
- Optimized performance
- Provides configuration for setting concurrency for Kuiper rule, so it can be optimized in different scenarios
- ``concurrency`` setting in [source](https://github.com/emqx/kuiper/blob/develop/docs/en_US/rules/sources/mqtt.md): How many instances will be started. By default, only an instance will be run. If more than one instance is specified, the topic must be a shared subscription topic.
- ``concurrency`` settings in [sink](https://github.com/emqx/kuiper/blob/develop/docs/en_US/rules/overview.md#actions): Specify how many instances of the sink will be run. If the value is bigger than 1, the order of the messages may not be retained.
- ``concurrency`` settings in [SQL plans](https://github.com/emqx/kuiper/blob/develop/docs/en_US/rules/overview.md#options): A rule is processed by several phases of plans according to the SQL statement. This option will specify how many instances will be run for each plan. If the value is bigger than 1, the order of the messages may not be retained.
- Performance test result
- Raspberry Pi 3B+: 12k messages/second; CPU utilization (sys+user): 70%; Memory: 20M
- AWS t2.micro( 1 Core * 1 GB, Ubuntu18.04): 10k messages/second; CPU utilization (sys+user): 25%; Memory: 20M
- Support [metrics collection for rules](https://github.com/emqx/kuiper/blob/develop/docs/en_US/cli/rules.md#get-the-status-of-a-rule), which can be used for message processing status tracking. The metrics includes,
- ``in, out, exception`` message count for all operators
- ``process_latency_ms`` for all operators
- ``buffer_length``, the used buffer length for all operators
- ``last_invocation``, the last invocation timestamp for all operators
- Tested in OpenWrt Linux (Chaos Calmer 15.05) with 1core CPU * 256M memory, and it works fine.
- Support re-connect to MQTT broker if MQTT source or sink is disconnected.
Bug fixes
- Print error message in ``cli`` command if any error is found during starting a rule.
- Fixed several issues in ``rest sink``.