More rabbit_amqqueue:list_* functions
This commit is contained in:
		
							parent
							
								
									188216aad3
								
							
						
					
					
						commit
						6d8a3ff7b0
					
				|  | @ -35,13 +35,15 @@ | |||
| -export([update/2, store_queue/1, update_decorators/1, policy_changed/2]). | ||||
| -export([update_mirroring/1, sync_mirrors/1, cancel_sync_mirrors/1]). | ||||
| -export([emit_unresponsive/6, emit_unresponsive_local/5, is_unresponsive/2]). | ||||
| -export([has_synchronised_mirrors_online/1]). | ||||
| -export([has_synchronised_mirrors_online/1, is_match/2, is_in_virtual_host/2]). | ||||
| -export([is_replicated/1, is_exclusive/1, is_not_exclusive/1, is_dead_exclusive/1]). | ||||
| -export([list_local_quorum_queues/0, list_local_quorum_queue_names/0, | ||||
| -export([list_local_quorum_queues/0, list_local_quorum_queue_names/0, list_local_stream_queues/0, | ||||
|          list_local_mirrored_classic_queues/0, list_local_mirrored_classic_names/0, | ||||
|          list_local_leaders/0, list_local_followers/0, get_quorum_nodes/1, | ||||
|          list_local_mirrored_classic_without_synchronised_mirrors/0, | ||||
|          list_local_mirrored_classic_without_synchronised_mirrors_for_cli/0]). | ||||
|          list_local_mirrored_classic_without_synchronised_mirrors_for_cli/0, | ||||
|          list_local_quorum_queues_with_name_matching/1, | ||||
|          list_local_quorum_queues_with_name_matching/2]). | ||||
| -export([ensure_rabbit_queue_record_is_initialized/1]). | ||||
| -export([format/1]). | ||||
| -export([delete_immediately_by_resource/1]). | ||||
|  | @ -59,7 +61,7 @@ | |||
| -export([is_server_named_allowed/1]). | ||||
| 
 | ||||
| -export([check_max_age/1]). | ||||
| -export([get_queue_type/1]). | ||||
| -export([get_queue_type/1, get_resource_vhost_name/1, get_resource_name/1]). | ||||
| 
 | ||||
| %% internal | ||||
| -export([internal_declare/2, internal_delete/2, run_backing_queue/3, | ||||
|  | @ -474,8 +476,11 @@ rebalance_module(Q) when ?amqqueue_is_classic(Q) -> | |||
| get_resource_name(#resource{name = Name}) -> | ||||
|     Name. | ||||
| 
 | ||||
| is_match(Subj, E) -> | ||||
|    nomatch /= re:run(Subj, E). | ||||
| get_resource_vhost_name(#resource{virtual_host = VHostName}) -> | ||||
|     VHostName. | ||||
| 
 | ||||
| is_match(Subj, RegEx) -> | ||||
|    nomatch /= re:run(Subj, RegEx). | ||||
| 
 | ||||
| iterative_rebalance(ByNode, MaxQueuesDesired) -> | ||||
|     case maybe_migrate(ByNode, MaxQueuesDesired) of | ||||
|  | @ -1072,6 +1077,7 @@ sample_n(Queues, N) when is_list(Queues) andalso is_integer(N) andalso N > 0 -> | |||
| 
 | ||||
| list_by_type(classic) -> list_by_type(rabbit_classic_queue); | ||||
| list_by_type(quorum)  -> list_by_type(rabbit_quorum_queue); | ||||
| list_by_type(stream)  -> list_by_type(rabbit_stream_queue); | ||||
| list_by_type(Type) -> | ||||
|     {atomic, Qs} = | ||||
|         mnesia:sync_transaction( | ||||
|  | @ -1095,6 +1101,12 @@ list_local_quorum_queues() -> | |||
|       amqqueue:get_state(Q) =/= crashed, | ||||
|       lists:member(node(), get_quorum_nodes(Q))]. | ||||
| 
 | ||||
| -spec list_local_stream_queues() -> [amqqueue:amqqueue()]. | ||||
| list_local_stream_queues() -> | ||||
|     [ Q || Q <- list_by_type(stream), | ||||
|       amqqueue:get_state(Q) =/= crashed, | ||||
|       lists:member(node(), get_quorum_nodes(Q))]. | ||||
| 
 | ||||
| -spec list_local_leaders() -> [amqqueue:amqqueue()]. | ||||
| list_local_leaders() -> | ||||
|     [ Q || Q <- list(), | ||||
|  | @ -1153,6 +1165,21 @@ list_local_mirrored_classic_without_synchronised_mirrors_for_cli() -> | |||
|          } | ||||
|      end || Q <- ClassicQs]. | ||||
| 
 | ||||
| -spec list_local_quorum_queues_with_name_matching(binary()) -> [amqqueue:amqqueue()]. | ||||
| list_local_quorum_queues_with_name_matching(Pattern) -> | ||||
|     [ Q || Q <- list_by_type(quorum), | ||||
|       amqqueue:get_state(Q) =/= crashed, | ||||
|       lists:member(node(), get_quorum_nodes(Q)), | ||||
|       is_match(get_resource_name(amqqueue:get_name(Q)), Pattern)]. | ||||
| 
 | ||||
| -spec list_local_quorum_queues_with_name_matching(vhost:name(), binary()) -> [amqqueue:amqqueue()]. | ||||
| list_local_quorum_queues_with_name_matching(VHostName, Pattern) -> | ||||
|     [ Q || Q <- list_by_type(quorum), | ||||
|       amqqueue:get_state(Q) =/= crashed, | ||||
|       lists:member(node(), get_quorum_nodes(Q)), | ||||
|       is_in_virtual_host(Q, VHostName), | ||||
|       is_match(get_resource_name(amqqueue:get_name(Q)), Pattern)]. | ||||
| 
 | ||||
| is_local_to_node(QPid, Node) when ?IS_CLASSIC(QPid) -> | ||||
|     Node =:= node(QPid); | ||||
| is_local_to_node({_, Leader} = QPid, Node) when ?IS_QUORUM(QPid) -> | ||||
|  | @ -1160,8 +1187,10 @@ is_local_to_node({_, Leader} = QPid, Node) when ?IS_QUORUM(QPid) -> | |||
| is_local_to_node(_QPid, _Node) -> | ||||
|     false. | ||||
| 
 | ||||
| -spec list(rabbit_types:vhost()) -> [amqqueue:amqqueue()]. | ||||
| is_in_virtual_host(Q, VHostName) -> | ||||
|     VHostName =:= get_resource_vhost_name(amqqueue:get_name(Q)). | ||||
| 
 | ||||
| -spec list(vhost:name()) -> [amqqueue:amqqueue()]. | ||||
| list(VHostPath) -> | ||||
|     list(VHostPath, rabbit_queue). | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue