Add config option for enabling local_random_exchange

This commit is contained in:
Deeksha 2025-08-08 10:28:17 -07:00 committed by udeeksha30-netizen
parent febcdbb1b8
commit 8a323b1888
3 changed files with 17 additions and 7 deletions

View File

@ -2594,9 +2594,9 @@ end}.
%% Enable or disable local random exchange
%%
%% {enable_local_random_exchange, false},
%% {exchange_types.local_random.enabled, false},
{mapping, "enable_local_random_exchange", "rabbit.enable_local_random_exchange", [
{mapping, "exchange_types.local_random.enabled", "rabbit.local_random_exchange_enabled", [
{datatype, {enum, [true, false]}}
]}.

View File

@ -59,13 +59,21 @@ info(_X, _) -> [].
serialise_events() -> false.
validate(_X) ->
case rabbit_feature_flags:is_enabled(?MODULE) andalso
rabbit_misc:get_env(rabbit, enable_local_random_exchange, true) of
rabbit_misc:get_env(rabbit, enable_local_random_exchange, false) of
true ->
ok;
case application:get_env(rabbit, local_random_exchange_enabled, true) of
true ->
ok;
false ->
rabbit_misc:protocol_error(
precondition_failed,
"x-local-random exchange is disabled by configuration", [],
'exchange.declare')
end;
false ->
rabbit_misc:protocol_error(
precondition_failed,
"x-local-random exchange feature not available", [],
"x-local-random exchange feature flag is disabled", [],
'exchange.declare')
end.

View File

@ -23,6 +23,8 @@ groups() ->
routed_to_one_local_queue_test,
no_route,
enable_local_random_exchange_config_test
no_route,
enable_local_random_exchange_config_test
]}
].
@ -202,7 +204,7 @@ enable_local_random_exchange_config_test(Config) ->
%% Disable the config flag
rabbit_ct_broker_helpers:rpc(Config, 0, application, set_env,
[rabbit, enable_local_random_exchange, false]),
[rabbit, local_random_exchange_enabled, false]),
%% Try to create exchange - should fail
?assertExit({{shutdown, {server_initiated_close, 406, _}}, _},
@ -210,7 +212,7 @@ enable_local_random_exchange_config_test(Config) ->
%% Re-enable the config flag
rabbit_ct_broker_helpers:rpc(Config, 0, application, set_env,
[rabbit, enable_local_random_exchange, true]),
[rabbit, local_random_exchange_enabled, true]),
%% Now exchange creation should succeed
declare_exchange(Config, E),