Skip to content

Commit a209ce5

Browse files
authored
[ISSUE #86]🎉Namesrv support get system topic list (request code 304) (#96)
1 parent 42ffd75 commit a209ce5

File tree

4 files changed

+32
-2
lines changed

4 files changed

+32
-2
lines changed

‎README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ Feature list:
9999
| Delete topic in name server | 216 | :sparkling_heart: :white_check_mark: | |
100100
| Register topic in name server | 217 | :sparkling_heart: :white_check_mark: | |
101101
| Get topics by cluster | 224 | :sparkling_heart: :white_check_mark: | |
102-
| Get system topic list from name server | 304 | :broken_heart: :x: | |
102+
| Get system topic list from name server | 304 | :sparkling_heart: :white_check_mark: | |
103103
| Get unit topic list | 311 | :broken_heart: :x: | |
104104
| Get has unit sub topic list | 312 | :broken_heart: :x: | |
105105
| Get has unit sub ununit topic list | 313 | :broken_heart: :x: | |

‎rocketmq-namesrv/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ Feature list:
3232
| Delete topic in name server | 216 | :sparkling_heart: :white_check_mark: | |
3333
| Register topic in name server | 217 | :sparkling_heart: :white_check_mark: | |
3434
| Get topics by cluster | 224 | :sparkling_heart: :white_check_mark: | |
35-
| Get system topic list from name server | 304 | :broken_heart: :x: | |
35+
| Get system topic list from name server | 304 | :sparkling_heart: :white_check_mark: | |
3636
| Get unit topic list | 311 | :broken_heart: :x: | |
3737
| Get has unit sub topic list | 312 | :broken_heart: :x: | |
3838
| Get has unit sub ununit topic list | 313 | :broken_heart: :x: | |

‎rocketmq-namesrv/src/processor/default_request_processor.rs

+8
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,9 @@ impl RequestProcessor for DefaultRequestProcessor {
9898
Some(RequestCode::RegisterTopicInNamesrv) => self.register_topic_to_name_srv(request),
9999
Some(RequestCode::GetKvlistByNamespace) => self.get_kv_list_by_namespace(request),
100100
Some(RequestCode::GetTopicsByCluster) => self.get_topics_by_cluster(request),
101+
Some(RequestCode::GetSystemTopicListFromNs) => {
102+
self.get_system_topic_list_from_ns(request)
103+
}
101104
_ => RemotingCommand::create_response_command_with_code(
102105
RemotingSysResponseCode::SystemError,
103106
),
@@ -442,6 +445,11 @@ impl DefaultRequestProcessor {
442445
.get_topics_by_cluster(request_header.cluster.as_str());
443446
RemotingCommand::create_response_command().set_body(Some(topics_by_cluster.encode()))
444447
}
448+
449+
fn get_system_topic_list_from_ns(&mut self, _request: RemotingCommand) -> RemotingCommand {
450+
let topic_list = self.route_info_manager.read().get_system_topic_list();
451+
RemotingCommand::create_response_command().set_body(Some(topic_list.encode()))
452+
}
445453
}
446454

447455
fn extract_register_topic_config_from_request(

‎rocketmq-namesrv/src/route/route_info_manager.rs

+22
Original file line numberDiff line numberDiff line change
@@ -776,4 +776,26 @@ impl RouteInfoManager {
776776
broker_addr: None,
777777
}
778778
}
779+
780+
pub(crate) fn get_system_topic_list(&self) -> TopicList {
781+
let mut topic_list = Vec::new();
782+
let mut broker_addr_out = String::new();
783+
for (cluster_name, broker_set) in self.cluster_addr_table.iter() {
784+
topic_list.push(cluster_name.clone());
785+
broker_set.iter().for_each(|broker_name| {
786+
topic_list.push(broker_name.clone());
787+
});
788+
}
789+
if !self.broker_addr_table.is_empty() {
790+
for broker_addr in self.broker_addr_table.values() {
791+
for ip in broker_addr.broker_addrs().values() {
792+
broker_addr_out = ip.clone();
793+
}
794+
}
795+
}
796+
TopicList {
797+
topic_list,
798+
broker_addr: Some(broker_addr_out),
799+
}
800+
}
779801
}

0 commit comments

Comments
 (0)