package forklift.integration.server; import kafka.server.KafkaConfig; import kafka.server.KafkaServerStartable; import java.io.File; import java.io.IOException; import java.util.Properties; /** * Embedded Kafka server */ public class KafkaService implements Runnable { private KafkaServerStartable kafka; public File dataDir = new File("src/test/resources/zafka"); private final int localZookeeperPort; private final int listenPort; public KafkaService(int localZookeeperPort, int listenPort) { this.localZookeeperPort = localZookeeperPort; this.listenPort = listenPort; } @Override public void run() { Properties properties = new Properties(); properties.setProperty("broker.id", "1"); properties.setProperty("listeners", "PLAINTEXT://:" + listenPort); properties.setProperty("num.network.threads", "3"); properties.setProperty("num.io.threads", "8"); properties.setProperty("socket.send.buffer.bytes", "102400"); properties.setProperty("socket.receive.buffer.bytes", "102400"); properties.setProperty("socket.request.max.bytes", "104857600"); properties.setProperty("log.dirs", dataDir.getAbsolutePath()); properties.setProperty("num.partitions", "16"); properties.setProperty("num.recovery.threads.per.data.dir", "1"); properties.setProperty("log.retention.hours", "168"); properties.setProperty("log.segment.bytes", "1073741824"); properties.setProperty("log.retention.check.interval.ms", "300000"); properties.setProperty("zookeeper.connect", "localhost:" + localZookeeperPort); properties.setProperty("zookeeper.connection.timeout.ms", "6000"); KafkaConfig kafkaConfig = new KafkaConfig(properties); kafka = new KafkaServerStartable(kafkaConfig); kafka.startup(); } public void stop() throws InterruptedException, IOException { kafka.shutdown(); Thread.sleep(1500); } public File getDataDirectoryFile() { return dataDir; } }