插件(Plugin)设计

插件是一个可以被动态加载的普通 Erlang 应用(Application)。插件主要通过钩子(Hook)机制扩展服务器功能,或通过注册扩展模块方式集成认证访问控制。

emqx_plugins 模块实现插件机制,提供加载卸载插件 API :

  1. -module(emqx_plugins).
  2. -export([load/1, unload/1]).
  3. %% @doc Load a Plugin
  4. load(PluginName :: atom()) -> ok | {error, any()}.
  5. %% @doc UnLoad a Plugin
  6. unload(PluginName :: atom()) -> ok | {error, any()}.

用户可通过 ./bin/emqx_ctl 命令行加载卸载插件:

  1. ./bin/emqx_ctl plugins load \<plugin name>
  2. ./bin/emqx_ctl plugins unload \<plugin name>

开发者请参考模版插件: http://github.com/emqx/emqx_plugin_template 插件(Plugin)设计 - 图1 (opens new window)