fix(emqx_delayed): fix config update not working

This commit is contained in:
firest 2022-02-25 11:24:30 +08:00
parent 91c8b8ab17
commit 2053d21bd5
2 changed files with 21 additions and 14 deletions

View File

@ -47,6 +47,7 @@
, list/1
, get_delayed_message/1
, delete_delayed_message/1
, post_config_update/5
]).
-export([format_delayed/1]).
@ -189,11 +190,30 @@ delete_delayed_message(Id0) ->
update_config(Config) ->
emqx_conf:update([delayed], Config, #{rawconf_with_defaults => true, override_to => cluster}).
post_config_update(_KeyPath, Config, _NewConf, _OldConf, _AppEnvs) ->
case maps:get(<<"enable">>, Config, undefined) of
undefined ->
ignore;
true ->
emqx_delayed:enable();
false ->
emqx_delayed:disable()
end,
case maps:get(<<"max_delayed_messages">>, Config, undefined) of
undefined ->
ignore;
Max ->
ok = emqx_delayed:set_max_delayed_messages(Max)
end,
ok.
%%--------------------------------------------------------------------
%% gen_server callback
%%--------------------------------------------------------------------
init([Opts]) ->
erlang:process_flag(trap_exit, true),
emqx_conf:add_handler([delayed], ?MODULE),
MaxDelayedMessages = maps:get(max_delayed_messages, Opts, 0),
{ok, ensure_stats_event(
ensure_publish_timer(#{timer => undefined,
@ -252,6 +272,7 @@ handle_info(Info, State) ->
{noreply, State}.
terminate(_Reason, #{timer := TRef}) ->
emqx_conf:remove_handler([delayed]),
emqx_misc:cancel_timer(TRef).
code_change(_Vsn, State, _Extra) ->

View File

@ -224,20 +224,6 @@ generate_max_delayed_messages(Config) ->
update_config_(Config) ->
case emqx_delayed:update_config(Config) of
{ok, #{raw_config := NewDelayed}} ->
case maps:get(<<"enable">>, Config, undefined) of
undefined ->
ignore;
true ->
emqx_delayed:enable();
false ->
emqx_delayed:disable()
end,
case maps:get(<<"max_delayed_messages">>, Config, undefined) of
undefined ->
ignore;
Max ->
ok = emqx_delayed:set_max_delayed_messages(Max)
end,
{200, NewDelayed};
{error, Reason} ->
Message = list_to_binary(