一、定义一个server.properties存储kafka连接的ip与端口
#zookeeper的访问ip和端口
host=*****
port=****
二、定义一个工具类LoadPropertiesByCode
public class LoadPropertiesByCode {
public static String getTextByCode(String code) {
ResourceBundle bundle = ResourceBundle.getBundle("kafka-config.server");
return bundle.getString(code);
}
}
三、写一个实时获取kafka-topic的接口
@Api(value = "BdgAccessResourceKafkaTopic数据接入kafka主题", tags = "数据接入")
@RestController
@RequestMapping("/kafka")
public class BdgAccessResourceKafkaTopicController {
@ApiOperation(value = "获取所有的kafka topic")
@GetMapping(value = "/getAllKafkaTopic")
public ResultObject<List<String>> getAllKafkaTopic() {
String host = LoadPropertiesByCode.getTextByCode("host");
String port = LoadPropertiesByCode.getTextByCode("port");
List<String> list = new ArrayList<>();
ZkUtils zkUtils = ZkUtils.apply(host + ":" + port, 30000, 30000, JaasUtils.isZkSecurityEnabled());
Map<String, Properties> topics = JavaConverters.mapAsJavaMapConverter(AdminUtils.fetchAllTopicConfigs(zkUtils))
.asJava();
for (Map.Entry<String, Properties> entry : topics.entrySet()) {
String key = entry.getKey();
list.add(key);
}
zkUtils.close();
return ResultObject.success(list);
}
}
四,接口返回的数据
{
"msg": "success",
"code": 0,
"data": [
"wormhole_heartbeat",
"x_test",
"wormhole_feedback",
"source",
"dataInfo",
"x-kafka"
]
}