![]() While declaring `emqx_conf` as an application dependency of `emqx_resource` worked for releases, it messed up the startup relationship during tests. Since only removing `emqx_conf` from the `applications` key in `emqx_resource` breaks the list of apps that need to be rebooted on config changes (since `emqx_conf` is not on any apps dependencies list, it was not being added to the final topologically sorted list), we now always add it as a vertex to ensure its presence there. This (apparently) makes the rebar3 release, the mix release and test runs behave normally. |
||
---|---|---|
.. | ||
include | ||
src | ||
test | ||
README.md | ||
rebar.config |
README.md
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 minimalemqx_resource
implementation;test/emqx_resource_SUITE.erl
for examples ofemqx_resource
usage.