emqx/apps/emqx_resource
Thales Macedo Garitezi 34d6dbca61
chore(mix): simplify build by using rebar3 for umbrella apps
By treating the apps in the umbrella as dependencies to be managed and
built by rebar3, we can simplify the maintenance of the release, at
the cost of increased build times: using Mix as before, it could track
changed files better than using rebar.  But the complexity and
possibility of discrepancies make it using rebar much more compelling.
2021-12-22 09:40:01 -03:00
..
include feat(resource): add option 'force_create' to emqx_resource:create/4 2021-12-20 10:26:27 +08:00
src chore(mix): minimal elixir mix release build 2021-12-21 13:51:22 -03:00
test feat(resource): add option 'force_create' to emqx_resource:create/4 2021-12-20 10:26:27 +08:00
README.md refactor(authn resources): add emqx_resource and emqx_authn tests 2021-11-22 21:08:04 +03:00
rebar.config fix(emqx_resource): disable the debug print for parse-transformed code 2021-06-07 22:11:05 +08:00

emqx_resource

The emqx_resource is a behavior that manages configuration specs and runtime states for resources like mysql or redis backends.

It is intended to be used by the emqx_bridges and all other resources that need CRUD operations to their configs, and need to initialize the states when creating.

There can be foreign references between resource instances via resource-id. So they may find each other via this Id.

The main idea of the emqx resource is to put all the general code in a common lib, including the config operations (like config validation, config dump back to files), and the state management. And we put all the specific codes to the callback modules.

See

  • test/emqx_test_resource.erl for a minimal emqx_resource implementation;
  • test/emqx_resource_SUITE.erl for examples of emqx_resource usage.