emqx/apps/emqx_schema_registry/README.md

89 lines
3.4 KiB
Markdown

# EMQX Schema Registry
EMQX Schema Registry for managing various of schemas for
decoding/encoding messages.
To use schema in rule engine, a schema name should be passed to the
SQL functions that decode/encode data, like:
```sql
SELECT
schema_decode('sensor_notify', payload) as payload
FROM
"message.publish"
WHERE
topic = 't/1'
```
## Using schema registry with rule engine
```
+---------------------------+
| |
Events/Msgs | | Events/Msgs
--------------------> EMQX |------------------>
| |
| |
+-------------|-------------+
|
HOOK |
|
+-------------v-------------+ +----------+
| | Data | |
| Rule Engine ------------- Backends |
| | | |
+------|-------------|------+ +----------+
|^ |^
Decode|| ||Encode
|| ||
+------v|------------v|-----+
| |
| Schema Registry |
| |
+---------------------------+
```
## Architecture
```
| |
Decode | [APIs] | Encode
| |
| | [Registry]
+------v--------------v------+
REGISTER SCHEMA | |
INSTANCE | | +--------+
-------------------> | | |
[Management APIs] | Schema Registry ------ Schema |
| | | |
| | +--------+
| |
+----------------------------+
/ | \
+---/---+ +---|----+ +---\---+
| | | | | |
[Decoders] | Avro | |ProtoBuf| |Others |
| | | | | |
+-------+ +--------+ +-------+
```
- Register schema instance: adds a new instance of a schema of a
certain type. For example, when the user may have several Avro or
Protobuf schemas that they wish to use with different data flows.
# Documentation
- Refer to [Introduction to Schema Registry](https://docs.emqx.com/en/enterprise/v5.1/data-integration/schema-registry.html) for how to use the EMQX dashboard for configuring schemas.
- Refer to [EMQX Rules](https://docs.emqx.com/en/enterprise/v5.0/data-integration/rules.html)
for the EMQX rules engine introduction.
# Contributing
Please see our [contributing.md](../../CONTRIBUTING.md).
# License
EMQ Business Source License 1.1, refer to [LICENSE](BSL.txt).