zmstone 275075dd2e chore: upgrade jesse from 1.8.0.1 to 1.8.1.1 hai 1 ano
..
etc 541d03a0ba refactor(schema_registry): refactor schema registry app and modules %!s(int64=2) %!d(string=hai) anos
include 2e1cb3d355 feat(external schema registry): add config load support hai 1 ano
priv 541d03a0ba refactor(schema_registry): refactor schema registry app and modules %!s(int64=2) %!d(string=hai) anos
src 2e1cb3d355 feat(external schema registry): add config load support hai 1 ano
test 2e1cb3d355 feat(external schema registry): add config load support hai 1 ano
BSL.txt 82403167c2 chore: update BSL license change date %!s(int64=2) %!d(string=hai) anos
README.md 541d03a0ba refactor(schema_registry): refactor schema registry app and modules %!s(int64=2) %!d(string=hai) anos
docker-ct a23c8845e4 ci: add confluent schema registry container hai 1 ano
mix.exs fd86516ea3 feat(schema registry): add external schema registry support hai 1 ano
rebar.config 275075dd2e chore: upgrade jesse from 1.8.0.1 to 1.8.1.1 hai 1 ano

README.md

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:

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

Contributing

Please see our contributing.md.

License

EMQ Business Source License 1.1, refer to LICENSE.