EmqxメッセージデータストレージMySQLプラグインソースコード分析(1)

 1.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.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).

送信元アドレス:https//github.com/tlchun/emqx-backend-mysql-store.git   、ドキュメントに従ってください。すべてのQoS1およびQoS2メッセージをmysqlに送信できます。

おすすめ

転載: blog.csdn.net/qq513036862/article/details/110347291