Análisis de código fuente del complemento MySQL de almacenamiento de datos de mensajes emqx (1)

 1. Análisis del código fuente del módulo emqx_backend_mysql_app

-module(emqx_backend_mysql_app).
-include("mysql/include/emqx_backend_mysql.hrl").
-behaviour(application).
-emqx_plugin(backend).
-export([start/2, stop/1]).

start(_Type, _Args) ->
    %% 获取配置文件mysql的配置信息
    Pools = application:get_env(emqx_backend_mysql,pools,[]),
    %% 启动应用的root根监控
    {ok, Sup} = emqx_backend_mysql_sup:start_link(Pools),
    %% 注册
    emqx_backend_mysql:register_metrics(),
    %% 载入插件  
    emqx_backend_mysql:load(),
    {ok, Sup}.

%% 应用停止,卸载插件
stop(_State) -> emqx_backend_mysql:unload().

2. Análisis del código fuente del módulo emqx_backend_mysql_sup

-module(emqx_backend_mysql_sup).

-include("mysql/include/emqx_backend_mysql.hrl").
%% 监听者
-behaviour(supervisor).
-export([start_link/1]).
-export([init/1]).

%% 启动 mysql池
start_link(Pools) ->
    supervisor:start_link({local, emqx_backend_mysql_sup},
                          emqx_backend_mysql_sup,
                          [Pools]).
%% 从Pools列表中读取配置,然后启动 emqx_backend_mysql_cli 模块
init([Pools]) ->
    {ok,{
   
   {one_for_one, 10, 100},[pool_spec(Pool, Env) || {Pool, Env} <- Pools]}}.
      
%%{id,start,restart,shutdown,type,modules}
%% ChildId:{emqx_backend_mysql, Pool}
%% Pool:emqx_backend_mysql:pool_name(Pool)
%% Mod:emqx_backend_mysql_cli
%% Opts:Env
pool_spec(Pool, Env) ->
    ecpool:pool_spec({emqx_backend_mysql, Pool},
                     emqx_backend_mysql:pool_name(Pool), 
                     emqx_backend_mysql_cli,
                     Env).

Dirección de origen: https://github.com/tlchun/emqx-backend-mysql-store.git   , siga la documentación y todos los mensajes de QoS1 y QoS2 se pueden enviar a mysql.

Supongo que te gusta

Origin blog.csdn.net/qq513036862/article/details/110347291
Recomendado
Clasificación