EMQXメッセージストレージRedisソースコード分析(2)

 emqx_backend_redis_supモジュールは、アプリケーションのルートリスナーとして、主に構成ファイルからデータを読み取り、そのデータに従って単一のマシンまたはクラスターを起動します。

-module(emqx_backend_redis_sup).

-include("../include/emqx_backend_redis.hrl").
-behaviour(supervisor).

-export([start_link/1]).

-export([init/1]).

%% 启动应用监听者
start_link(Pools) ->
  supervisor:start_link({local, emqx_backend_redis_sup}, emqx_backend_redis_sup, [Pools]).

%% 回调方法
init([Pools]) ->
%%  获取进程描述
  PoolSpec = lists:flatten([pool_spec(Pool, Env) || {Pool, Env} <- Pools]),
  {ok, {
   
   {one_for_one, 10, 100}, PoolSpec}}.

%% 进程池描述
pool_spec(Pool, Env) ->
  case proplists:get_value(type, Env) of
%%    集群模型
    cluster ->
      {ok, _} =
        eredis_cluster:start_pool(emqx_backend_redis:pool_name(Pool), Env), [];
%%    单机模式
    _ ->
      [sub_spec(Env), ecpool:pool_spec({emqx_backend_redis, Pool}, emqx_backend_redis:pool_name(Pool), emqx_backend_redis_cli, Env)]
  end.

sub_spec(Env) ->
  {emqx_backend_redis_sub, {emqx_backend_redis_sub, start_link, [Env]}, permanent, 5000, worker, [emqx_backend_redis_sub]}.

 

おすすめ

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