LibOss.Config.Manager (lib_oss v0.3.0)

View Source

统一的配置管理器,提供配置加载、缓存和运行时更新功能。

该模块负责:

  • 从多个来源加载配置(应用配置、环境变量、运行时配置)
  • 配置缓存和更新
  • 配置变更通知
  • 环境特定配置处理

Summary

Functions

Returns a specification to start this module under a supervisor.

重新加载配置。

启动配置管理器。

启动配置管理器的便利函数(保持向后兼容)。

订阅配置变更通知。

取消订阅配置变更通知。

Types

config_key()

@type config_key() :: atom()

config_source()

@type config_source() :: :app_config | :env_vars | :runtime

config_value()

@type config_value() :: any()

t()

@type t() :: %LibOss.Config.Manager{
  config_cache: map(),
  env: LibOss.Config.Validator.env(),
  module_name: atom(),
  otp_app: atom(),
  subscribers: [pid()]
}

Functions

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

get_config(module_name, key \\ nil)

@spec get_config(atom(), config_key() | nil) :: any()

获取配置。

参数

  • module_name - 模块名称
  • key - 配置键(可选)

返回值

  • 配置值或完整配置

reload_config(module_name)

@spec reload_config(atom()) :: :ok | {:error, String.t()}

重新加载配置。

参数

  • module_name - 模块名称

返回值

  • :ok - 重新加载成功
  • {:error, reason} - 重新加载失败

start_link(config)

@spec start_link(keyword()) :: GenServer.on_start()

启动配置管理器。

参数

  • config - 包含以下键的配置关键字列表:
    • :otp_app - OTP应用名称
    • :module_name - 模块名称
    • :name - GenServer进程名称(可选)
    • 其他初始化选项

返回值

  • {:ok, pid} - 启动成功
  • {:error, reason} - 启动失败

示例

# 在应用的supervision tree中使用
defmodule MyApp.Application do
  use Application

  def start(_type, _args) do
    children = [
      {LibOss.Config.Manager, [
        otp_app: :my_app,
        module_name: MyOss,
        name: MyOss.ConfigManager
      ]}
    ]

    Supervisor.start_link(children, strategy: :one_for_one)
  end
end

# 或者直接启动
config = [
  otp_app: :my_app,
  module_name: MyOss,
  name: MyOss.ConfigManager
]
{:ok, pid} = LibOss.Config.Manager.start_link(config)

start_link(otp_app, module_name, opts \\ [])

@spec start_link(atom(), atom(), keyword()) :: GenServer.on_start()

启动配置管理器的便利函数(保持向后兼容)。

参数

  • otp_app - OTP应用名称
  • module_name - 模块名称
  • opts - 启动选项

返回值

  • {:ok, pid} - 启动成功
  • {:error, reason} - 启动失败

subscribe(module_name, subscriber \\ self())

@spec subscribe(atom(), pid()) :: :ok

订阅配置变更通知。

参数

  • module_name - 模块名称
  • subscriber - 订阅者进程

返回值

  • :ok - 订阅成功

unsubscribe(module_name, subscriber \\ self())

@spec unsubscribe(atom(), pid()) :: :ok

取消订阅配置变更通知。

参数

  • module_name - 模块名称
  • subscriber - 订阅者进程

返回值

  • :ok - 取消订阅成功

update_config(module_name, config)

@spec update_config(
  atom(),
  keyword()
) :: :ok | {:error, String.t()}

更新配置。

参数

  • module_name - 模块名称
  • config - 新配置

返回值

  • :ok - 更新成功
  • {:error, reason} - 更新失败