插件(Plugin)设计
插件是一个可以被动态加载的普通 Erlang 应用(Application)。插件主要通过钩子(Hook)机制扩展服务器功能,或通过注册扩展模块方式集成认证访问控制。
emqx_plugins 模块实现插件机制,提供加载卸载插件 API :
-module(emqx_plugins).
-export([load/1, unload/1]).
%% @doc Load a Plugin
load(PluginName :: atom()) -> ok | {error, any()}.
%% @doc UnLoad a Plugin
unload(PluginName :: atom()) -> ok | {error, any()}.
用户可通过 ./bin/emqx_ctl 命令行加载卸载插件:
./bin/emqx_ctl plugins load \<plugin name>
./bin/emqx_ctl plugins unload \<plugin name>
开发者请参考模版插件: http://github.com/emqx/emqx_plugin_template (opens new window)