EMQ X 配置变更历史

为方便用户与插件开发者使用,EMQ X 配置文件经过四次调整。

  1. EMQ X 1.x 版本采用 Erlang 原生配置文件格式 etc/emqttd.config:

    1. {emqttd, [
    2. %% Authentication and Authorization
    3. {access, [
    4. %% Authetication. Anonymous Default
    5. {auth, [
    6. %% Authentication with username, password
    7. %{username, []},
    8. %% Authentication with clientid
    9. %{clientid, [{password, no}, {file, "etc/clients.config"}]},

Erlang 的原生配置格式多层级嵌套,对非 Erlang 开发者的用户很不友好。

  1. EMQ X 2.0-beta.x 版本简化了原生 Erlang 配置文件,采用类似 rebar.config 或 relx.config 格式:

    1. %% Max ClientId Length Allowed.
    2. {mqtt_max_clientid_len, 512}.
    3. %% Max Packet Size Allowed, 64K by default.
    4. {mqtt_max_packet_size, 65536}.
    5. %% Client Idle Timeout.
    6. {mqtt_client_idle_timeout, 30}. % Second

简化后的 Erlang 原生配置格式方便用户配置,但插件开发者不得不依赖 gen_conf 库,而不是通过 appliaton:get_env 读取配置参数。

  1. EMQ X 2.0-rc.2 正式版集成了 cuttlefish 库,采用了类似 sysctl 的 k = v 通用格式,并在系统启动时翻译成 Erlang 原生配置格式:

    1. ## Node name
    2. node.name = emq@127.0.0.1
    3. ## Max ClientId Length Allowed.
    4. mqtt.max_clientid_len = 1024
  2. EMQ X 3.0-beta.1 测试版正式更名 emqttd 为 emqx ,配置名称与配置信息进行相关变化:

    1. ## Profile
    2. etc/emq.config ==> etc/emqx.config
    3. ## Node name
    4. 原先:
    5. node.name = emq@127.0.0.1
    6. 现在:
    7. node.name = emqx@127.0.0.1

EMQ X 启动时配置文件处理流程:

image