fix(emqx_delayed): fix config update not working
This commit is contained in:
parent
91c8b8ab17
commit
2053d21bd5
|
@ -47,6 +47,7 @@
|
||||||
, list/1
|
, list/1
|
||||||
, get_delayed_message/1
|
, get_delayed_message/1
|
||||||
, delete_delayed_message/1
|
, delete_delayed_message/1
|
||||||
|
, post_config_update/5
|
||||||
]).
|
]).
|
||||||
|
|
||||||
-export([format_delayed/1]).
|
-export([format_delayed/1]).
|
||||||
|
@ -189,11 +190,30 @@ delete_delayed_message(Id0) ->
|
||||||
update_config(Config) ->
|
update_config(Config) ->
|
||||||
emqx_conf:update([delayed], Config, #{rawconf_with_defaults => true, override_to => cluster}).
|
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
|
%% gen_server callback
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
|
|
||||||
init([Opts]) ->
|
init([Opts]) ->
|
||||||
|
erlang:process_flag(trap_exit, true),
|
||||||
|
emqx_conf:add_handler([delayed], ?MODULE),
|
||||||
MaxDelayedMessages = maps:get(max_delayed_messages, Opts, 0),
|
MaxDelayedMessages = maps:get(max_delayed_messages, Opts, 0),
|
||||||
{ok, ensure_stats_event(
|
{ok, ensure_stats_event(
|
||||||
ensure_publish_timer(#{timer => undefined,
|
ensure_publish_timer(#{timer => undefined,
|
||||||
|
@ -252,6 +272,7 @@ handle_info(Info, State) ->
|
||||||
{noreply, State}.
|
{noreply, State}.
|
||||||
|
|
||||||
terminate(_Reason, #{timer := TRef}) ->
|
terminate(_Reason, #{timer := TRef}) ->
|
||||||
|
emqx_conf:remove_handler([delayed]),
|
||||||
emqx_misc:cancel_timer(TRef).
|
emqx_misc:cancel_timer(TRef).
|
||||||
|
|
||||||
code_change(_Vsn, State, _Extra) ->
|
code_change(_Vsn, State, _Extra) ->
|
||||||
|
|
|
@ -224,20 +224,6 @@ generate_max_delayed_messages(Config) ->
|
||||||
update_config_(Config) ->
|
update_config_(Config) ->
|
||||||
case emqx_delayed:update_config(Config) of
|
case emqx_delayed:update_config(Config) of
|
||||||
{ok, #{raw_config := NewDelayed}} ->
|
{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};
|
{200, NewDelayed};
|
||||||
{error, Reason} ->
|
{error, Reason} ->
|
||||||
Message = list_to_binary(
|
Message = list_to_binary(
|
||||||
|
|
Loading…
Reference in New Issue