com.ebay.jetstream.event.channel.kafka.TestKafkaServer.java Source code

Java tutorial

Introduction

Here is the source code for com.ebay.jetstream.event.channel.kafka.TestKafkaServer.java

Source

/*******************************************************************************
 *  Copyright  2012-2015 eBay Software Foundation
 *  This program is dual licensed under the MIT and Apache 2.0 licenses.
 *  Please see LICENSE for more information.
 *******************************************************************************/
package com.ebay.jetstream.event.channel.kafka;

import java.io.File;
import java.io.IOException;
import java.util.Properties;

import kafka.server.KafkaConfig;
import kafka.server.KafkaServerStartable;

import org.apache.commons.io.FileUtils;

import com.google.common.io.Files;

public class TestKafkaServer {

    private KafkaConfig kafkaConfig;
    private KafkaServerStartable kafkaServer;

    private File locate;

    public TestKafkaServer(Properties properties) {
        String path = properties.getProperty("log.dir");
        locate = Files.createTempDir();
        File dir = new File(locate, path).getAbsoluteFile();
        properties.setProperty("log.dir", dir.getAbsolutePath());

        kafkaConfig = new KafkaConfig(properties);
        System.out.println("num.partitions =" + kafkaConfig.numPartitions());
        System.out.println("background.threads =" + kafkaConfig.backgroundThreads());
        kafkaServer = new KafkaServerStartable(kafkaConfig);
        try {
            kafkaServer.startup();
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("embedded kafka is up");
    }

    public TestKafkaServer(String logDir, int port, int brokerId, String zkConnect, int numPartitions) {
        this(createProperties(logDir, port, brokerId, zkConnect, numPartitions));
    }

    private static Properties createProperties(String logDir, int port, int brokerId, String zkConnect,
            int numPartitions) {
        Properties properties = new Properties();
        properties.put("port", port + "");
        properties.put("broker.id", brokerId + "");
        properties.put("num.partitions", numPartitions + "");
        properties.put("log.dir", logDir);
        properties.put("enable.zookeeper", "true");
        properties.put("zookeeper.connect", zkConnect);
        return properties;
    }

    public void stop() {
        kafkaServer.shutdown();
        try {
            FileUtils.deleteDirectory(locate);
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("embedded kafka stop");
    }

}