Introduce cleanup steps enabling us to disable federation at runtime
This commit is contained in:
parent
d95c85c10a
commit
2bf36028ce
|
|
@ -24,6 +24,12 @@
|
|||
{requires, rabbit_registry},
|
||||
{enables, recovery}]}).
|
||||
|
||||
-rabbit_cleanup_step({?MODULE,
|
||||
[{description, "federation exchange decorator"},
|
||||
{mfa, {rabbit_registry, unregister,
|
||||
[exchange_decorator, <<"federation">>]}},
|
||||
{requires, rabbit_federation_supervisor}]}).
|
||||
|
||||
-include_lib("amqp_client/include/amqp_client.hrl").
|
||||
|
||||
-behaviour(rabbit_exchange_decorator).
|
||||
|
|
|
|||
|
|
@ -21,7 +21,14 @@
|
|||
-include_lib("rabbit_common/include/rabbit.hrl").
|
||||
|
||||
-export([validate/4, notify/4, notify_clear/3]).
|
||||
-export([register/0, validate_policy/1]).
|
||||
-export([register/0, unregister/0, validate_policy/1]).
|
||||
|
||||
-define(RUNTIME_PARAMETERS,
|
||||
[{runtime_parameter, <<"federation">>},
|
||||
{runtime_parameter, <<"federation-upstream">>},
|
||||
{runtime_parameter, <<"federation-upstream-set">>},
|
||||
{policy_validator, <<"federation-upstream">>},
|
||||
{policy_validator, <<"federation-upstream-set">>}]).
|
||||
|
||||
-rabbit_boot_step({?MODULE,
|
||||
[{description, "federation parameters"},
|
||||
|
|
@ -29,13 +36,19 @@
|
|||
{requires, rabbit_registry},
|
||||
{enables, recovery}]}).
|
||||
|
||||
-rabbit_cleanup_step({?MODULE,
|
||||
[{description, "federation parameters"},
|
||||
{mfa, {rabbit_federation_parameters, unregister, []}},
|
||||
{requires, rabbit_federation_supervisor}]}).
|
||||
|
||||
register() ->
|
||||
[rabbit_registry:register(Class, Name, ?MODULE) ||
|
||||
{Class, Name} <- [{runtime_parameter, <<"federation">>},
|
||||
{runtime_parameter, <<"federation-upstream">>},
|
||||
{runtime_parameter, <<"federation-upstream-set">>},
|
||||
{policy_validator, <<"federation-upstream">>},
|
||||
{policy_validator, <<"federation-upstream-set">>}]],
|
||||
{Class, Name} <- ?RUNTIME_PARAMETERS],
|
||||
ok.
|
||||
|
||||
unregister() ->
|
||||
[rabbit_registry:unregister(Class, Name) ||
|
||||
{Class, Name} <- ?RUNTIME_PARAMETERS],
|
||||
ok.
|
||||
|
||||
validate(_VHost, <<"federation-upstream-set">>, Name, Term) ->
|
||||
|
|
|
|||
|
|
@ -23,6 +23,12 @@
|
|||
{requires, rabbit_registry},
|
||||
{enables, recovery}]}).
|
||||
|
||||
-rabbit_cleanup_step({?MODULE,
|
||||
[{description, "federation queue decorator"},
|
||||
{mfa, {rabbit_registry, unregister,
|
||||
[queue_decorator, <<"federation">>]}},
|
||||
{requires, rabbit_federation_supervisor}]}).
|
||||
|
||||
-include_lib("amqp_client/include/amqp_client.hrl").
|
||||
-include("rabbit_federation.hrl").
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@
|
|||
-include_lib("rabbit_common/include/rabbit.hrl").
|
||||
-define(SUPERVISOR, rabbit_federation_sup).
|
||||
|
||||
-export([start_link/0]).
|
||||
-export([start_link/0, stop/0]).
|
||||
|
||||
-export([init/1]).
|
||||
|
||||
|
|
@ -37,11 +37,19 @@
|
|||
{requires, kernel_ready},
|
||||
{enables, rabbit_federation_exchange}]}).
|
||||
|
||||
-rabbit_cleanup_step({rabbit_federation_supervisor,
|
||||
[{description, "federation"},
|
||||
{mfa, {?MODULE, stop, []}}]}).
|
||||
|
||||
%%----------------------------------------------------------------------------
|
||||
|
||||
start_link() ->
|
||||
supervisor:start_link({local, ?SUPERVISOR}, ?MODULE, []).
|
||||
|
||||
stop() ->
|
||||
ok = supervisor:terminate_child(rabbit_sup, ?MODULE),
|
||||
ok = supervisor:delete_child(rabbit_sup, ?MODULE).
|
||||
|
||||
%%----------------------------------------------------------------------------
|
||||
|
||||
init([]) ->
|
||||
|
|
|
|||
Loading…
Reference in New Issue