package com.neverwinterdp.kafka.tool.server;
import java.util.HashMap;
import com.neverwinterdp.tool.server.Server;
import com.neverwinterdp.util.FileUtil;
import com.neverwinterdp.zk.tool.server.EmbededZKServerSet;
public class KafkaCluster {
private EmbededZKServerSet zkServers ;
private EmbededKafkaServerSet kafkaServers ;
public KafkaCluster(String serverDir) throws Exception {
this(serverDir, 1, 3);
}
public KafkaCluster(String serverDir, int numOfZkInstances, int numOfKafkaInstances) throws Exception {
FileUtil.removeIfExist(serverDir, false);
zkServers = new EmbededZKServerSet(serverDir + "/zookeeper", 2181, numOfZkInstances);
kafkaServers = new EmbededKafkaServerSet(serverDir + "/kafka", 9092, numOfKafkaInstances, new HashMap<String, String>());
}
public KafkaCluster setVerbose(boolean b) {
kafkaServers.setVerbose(b) ;
return this;
}
public KafkaCluster setNumOfPartition(int number) {
kafkaServers.setNumOfPartition(number) ;
return this;
}
public KafkaCluster setReplication(int replication) {
kafkaServers.setReplication(replication);
return this;
}
public void start() throws Exception {
zkServers.start();
Thread.sleep(2000);
kafkaServers.start();
}
public Server findKafkaServerByPort(int port) {
return kafkaServers.findServerByPort(port) ;
}
public void shutdown() throws Exception {
System.out.println("Shutdown Kafka Servers");
System.out.println("======================");
kafkaServers.shutdown();
System.out.println("Shutdown Zookeeper Servers");
System.out.println("==========================");
zkServers.shutdown();
}
public String getZKConnect() { return zkServers.getConnectString(); }
public String getKafkaConnect() { return kafkaServers.getConnectString(); }
}