diff --git a/etc/emqx.conf b/etc/emqx.conf index 7454f32f4..b559f28a3 100644 --- a/etc/emqx.conf +++ b/etc/emqx.conf @@ -202,9 +202,11 @@ mqtt.max_packet_size = 1MB mqtt.max_clientid_len = 65535 ## Maximum topic levels allowed. 0 means no limit. +## Depth so big may lead to subscribing performance issues. ## -## Value: Number -mqtt.max_topic_levels = 0 +## Value: Number [0-65535] +## Default: 128 +mqtt.max_topic_levels = 128 ## Maximum QoS allowed. ## @@ -242,7 +244,7 @@ mqtt.ignore_loop_deliver = false mqtt.strict_mode = false ## Specify the response information returned to the client -## +## ## Value: String ## mqtt.response_information = example diff --git a/etc/zones.conf b/etc/zones.conf index a290eaa4d..47d3e2232 100644 --- a/etc/zones.conf +++ b/etc/zones.conf @@ -57,9 +57,11 @@ zone.external.force_shutdown_policy = 10000|32MB ## zone.external.max_clientid_len = 1024 ## Maximum topic levels allowed. 0 means no limit. +## Depth so big may lead to subscribing performance issues. ## -## Value: Number -## zone.external.max_topic_levels = 7 +## Value: Number [0-65535] +## Default 7 +zone.external.max_topic_levels = 7 ## Maximum QoS allowed. ## @@ -250,7 +252,7 @@ zone.external.ignore_loop_deliver = false zone.external.strict_mode = false ## Specify the response information returned to the client -## +## ## Value: String ## zone.external.response_information = example @@ -341,7 +343,7 @@ zone.internal.ignore_loop_deliver = false zone.internal.strict_mode = false ## Specify the response information returned to the client -## +## ## Value: String ## zone.internal.response_information = example diff --git a/priv/emqx.schema b/priv/emqx.schema index 4bfa44c6a..0ff956869 100644 --- a/priv/emqx.schema +++ b/priv/emqx.schema @@ -757,7 +757,7 @@ end}. %% @doc Set the Maximum topic levels. {mapping, "mqtt.max_topic_levels", "emqx.max_topic_levels", [ - {default, 0}, + {default, 128}, {datatype, integer} ]}. diff --git a/test/emqx_channel_SUITE.erl b/test/emqx_channel_SUITE.erl index 613da40ac..12c024775 100644 --- a/test/emqx_channel_SUITE.erl +++ b/test/emqx_channel_SUITE.erl @@ -82,7 +82,7 @@ t_chan_caps(_) -> #{max_clientid_len := 65535, max_qos_allowed := 2, max_topic_alias := 65535, - max_topic_levels := 0, + max_topic_levels := 128, retain_available := true, shared_subscription := true, subscription_identifiers := true, @@ -768,4 +768,3 @@ session(InitFields) when is_map(InitFields) -> quota() -> emqx_limiter:init(zone, [{conn_messages_routing, {5, 1}}, {overall_messages_routing, {10, 1}}]). -