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},
|
{requires, rabbit_registry},
|
||||||
{enables, recovery}]}).
|
{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").
|
-include_lib("amqp_client/include/amqp_client.hrl").
|
||||||
|
|
||||||
-behaviour(rabbit_exchange_decorator).
|
-behaviour(rabbit_exchange_decorator).
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,14 @@
|
||||||
-include_lib("rabbit_common/include/rabbit.hrl").
|
-include_lib("rabbit_common/include/rabbit.hrl").
|
||||||
|
|
||||||
-export([validate/4, notify/4, notify_clear/3]).
|
-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,
|
-rabbit_boot_step({?MODULE,
|
||||||
[{description, "federation parameters"},
|
[{description, "federation parameters"},
|
||||||
|
|
@ -29,13 +36,19 @@
|
||||||
{requires, rabbit_registry},
|
{requires, rabbit_registry},
|
||||||
{enables, recovery}]}).
|
{enables, recovery}]}).
|
||||||
|
|
||||||
|
-rabbit_cleanup_step({?MODULE,
|
||||||
|
[{description, "federation parameters"},
|
||||||
|
{mfa, {rabbit_federation_parameters, unregister, []}},
|
||||||
|
{requires, rabbit_federation_supervisor}]}).
|
||||||
|
|
||||||
register() ->
|
register() ->
|
||||||
[rabbit_registry:register(Class, Name, ?MODULE) ||
|
[rabbit_registry:register(Class, Name, ?MODULE) ||
|
||||||
{Class, Name} <- [{runtime_parameter, <<"federation">>},
|
{Class, Name} <- ?RUNTIME_PARAMETERS],
|
||||||
{runtime_parameter, <<"federation-upstream">>},
|
ok.
|
||||||
{runtime_parameter, <<"federation-upstream-set">>},
|
|
||||||
{policy_validator, <<"federation-upstream">>},
|
unregister() ->
|
||||||
{policy_validator, <<"federation-upstream-set">>}]],
|
[rabbit_registry:unregister(Class, Name) ||
|
||||||
|
{Class, Name} <- ?RUNTIME_PARAMETERS],
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
validate(_VHost, <<"federation-upstream-set">>, Name, Term) ->
|
validate(_VHost, <<"federation-upstream-set">>, Name, Term) ->
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,12 @@
|
||||||
{requires, rabbit_registry},
|
{requires, rabbit_registry},
|
||||||
{enables, recovery}]}).
|
{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_lib("amqp_client/include/amqp_client.hrl").
|
||||||
-include("rabbit_federation.hrl").
|
-include("rabbit_federation.hrl").
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@
|
||||||
-include_lib("rabbit_common/include/rabbit.hrl").
|
-include_lib("rabbit_common/include/rabbit.hrl").
|
||||||
-define(SUPERVISOR, rabbit_federation_sup).
|
-define(SUPERVISOR, rabbit_federation_sup).
|
||||||
|
|
||||||
-export([start_link/0]).
|
-export([start_link/0, stop/0]).
|
||||||
|
|
||||||
-export([init/1]).
|
-export([init/1]).
|
||||||
|
|
||||||
|
|
@ -37,11 +37,19 @@
|
||||||
{requires, kernel_ready},
|
{requires, kernel_ready},
|
||||||
{enables, rabbit_federation_exchange}]}).
|
{enables, rabbit_federation_exchange}]}).
|
||||||
|
|
||||||
|
-rabbit_cleanup_step({rabbit_federation_supervisor,
|
||||||
|
[{description, "federation"},
|
||||||
|
{mfa, {?MODULE, stop, []}}]}).
|
||||||
|
|
||||||
%%----------------------------------------------------------------------------
|
%%----------------------------------------------------------------------------
|
||||||
|
|
||||||
start_link() ->
|
start_link() ->
|
||||||
supervisor:start_link({local, ?SUPERVISOR}, ?MODULE, []).
|
supervisor:start_link({local, ?SUPERVISOR}, ?MODULE, []).
|
||||||
|
|
||||||
|
stop() ->
|
||||||
|
ok = supervisor:terminate_child(rabbit_sup, ?MODULE),
|
||||||
|
ok = supervisor:delete_child(rabbit_sup, ?MODULE).
|
||||||
|
|
||||||
%%----------------------------------------------------------------------------
|
%%----------------------------------------------------------------------------
|
||||||
|
|
||||||
init([]) ->
|
init([]) ->
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue