diff --git a/deps/rabbit/src/rabbit_amqp_management.erl b/deps/rabbit/src/rabbit_amqp_management.erl index 65e9603495..0c4459678b 100644 --- a/deps/rabbit/src/rabbit_amqp_management.erl +++ b/deps/rabbit/src/rabbit_amqp_management.erl @@ -437,7 +437,13 @@ encode_queue(Q, NumMsgs, NumConsumers) -> {{utf8, <<"durable">>}, {boolean, Durable}}, {{utf8, <<"auto_delete">>}, {boolean, AutoDelete}}, {{utf8, <<"exclusive">>}, {boolean, Exclusive}}, - {{utf8, <<"type">>}, {utf8, rabbit_queue_type:to_binary(QType)}}, + {{utf8, <<"type">>}, + {utf8, case rabbit_queue_type:short_alias_of(QType) of + undefined -> + atom_to_binary(QType); + ShortName -> + ShortName + end}}, {{utf8, <<"arguments">>}, QArgs} ], KVList1 = if is_list(Replicas) -> diff --git a/deps/rabbit/src/rabbit_queue_type.erl b/deps/rabbit/src/rabbit_queue_type.erl index de7754442b..498db95dc8 100644 --- a/deps/rabbit/src/rabbit_queue_type.erl +++ b/deps/rabbit/src/rabbit_queue_type.erl @@ -20,8 +20,6 @@ close/1, discover/1, short_alias_of/1, - feature_flag_name/1, - to_binary/1, default/0, default_alias/0, fallback/0, @@ -300,7 +298,7 @@ discover(Other) when is_binary(Other) -> {ok, Mod} = rabbit_registry:lookup_module(queue, T), Mod. --spec short_alias_of(queue_type()) -> binary(). +-spec short_alias_of(queue_type()) -> undefined | binary(). %% The opposite of discover/1: returns a short alias given a module name short_alias_of(<<"rabbit_quorum_queue">>) -> <<"quorum">>; @@ -335,15 +333,6 @@ short_alias_of(<<"stream">>) -> short_alias_of(_Other) -> undefined. -feature_flag_name(<<"quorum">>) -> - quorum_queue; -feature_flag_name(<<"classic">>) -> - undefined; -feature_flag_name(<<"stream">>) -> - stream_queue; -feature_flag_name(_) -> - undefined. - %% If the client does not specify the type, the virtual host does not have any %% metadata default, and rabbit.default_queue_type is not set in the application env, %% use this type as the last resort. @@ -362,19 +351,9 @@ default() -> default_alias() -> short_alias_of(default()). --spec to_binary(module()) -> binary(). -to_binary(rabbit_classic_queue) -> - <<"classic">>; -to_binary(rabbit_quorum_queue) -> - <<"quorum">>; -to_binary(rabbit_stream_queue) -> - <<"stream">>; -to_binary(Other) -> - atom_to_binary(Other). - %% is a specific queue type implementation enabled -spec is_enabled(module()) -> boolean(). -is_enabled(Type) -> +is_enabled(Type) when is_atom(Type) -> Type:is_enabled(). -spec is_compatible(module(), boolean(), boolean(), boolean()) -> diff --git a/deps/rabbit/src/rabbit_vhost.erl b/deps/rabbit/src/rabbit_vhost.erl index ce53154d7e..bb616a684c 100644 --- a/deps/rabbit/src/rabbit_vhost.erl +++ b/deps/rabbit/src/rabbit_vhost.erl @@ -166,19 +166,18 @@ do_add(Name, Metadata, ActingUser) -> case Metadata of #{default_queue_type := DQT} -> %% check that the queue type is known - rabbit_log:debug("Default queue type of virtual host '~ts' is ~tp", [Name, DQT]), + rabbit_log:debug("Default queue type of virtual host '~ts' is ~tp", + [Name, DQT]), try rabbit_queue_type:discover(DQT) of - _ -> - case rabbit_queue_type:feature_flag_name(DQT) of - undefined -> ok; - Flag when is_atom(Flag) -> - case rabbit_feature_flags:is_enabled(Flag) of - true -> ok; - false -> throw({error, queue_type_feature_flag_is_not_enabled}) - end + QueueType when is_atom(QueueType) -> + case rabbit_queue_type:is_enabled(QueueType) of + true -> + ok; + false -> + throw({error, queue_type_feature_flag_is_not_enabled}) end catch _:_ -> - throw({error, invalid_queue_type, DQT}) + throw({error, invalid_queue_type, DQT}) end; _ -> ok