通过编程的方式启动Kafka(包括ZooKeeper)

很多时候,出于开发和测试的需要,或者希望Kafka以嵌入式的方式运行,这时就需要通过编程的方式启动Kafka。 Kafka依赖于Zookeeper,所以在启动Kafka之前需要先启动Zookeeper。

Zookeeper服务启动:

Zookeeper有两种启动方式,一是ZooKeeperServerMain,二是QuorumPeerMain,分别对应独立方式启动和集群方式启动,在我们这个场景中,应该使用ZooKeeperServerMain方式,对应的代码片段如下:

 QuorumPeerConfig config = new QuorumPeerConfig();
InputStream is = KafkaTest.class.getResourceAsStream("/zookeeper.properties");
Properties p = new Properties();	    
p.load(is);
config.parseProperties(p);
ServerConfig   serverconfig = new ServerConfig();
serverconfig.readFrom(config);
new ZooKeeperServerMain().runFromConfig(serverconfig);

其中zookeeper.properties为zookeeper的配置文件,为了避免不必要的麻烦,可以从kafka的发布包中提取。 这段代码会启动一个zookeeper服务,因此在执行runFromConfig方法后当前线程会阻塞。

Kafka服务启动:

这个相对简单,代码片段如下:

InputStream is = KafkaTest.class.getResourceAsStream("/server.properties");
Properties p = new Properties();
p.load(is);
is.close();
KafkaServerStartable kafkaServerStartable = KafkaServerStartable.fromProps(p);
kafkaServerStartable.startup();
kafkaServerStartable.awaitShutdown();

其中server.properties为Kafka的配置文件,可以从发布包中进行提取。 因为依赖关系的原因,应该在启动完Zookeeper之后再启动Kafka。 对应的pom.xml文件如下:

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka_2.11</artifactId>
    <version>1.0.0</version>
</dependency>

如果要落地到具体的工程中,需要使用多线程的方式来启动。

转载于:https://my.oschina.net/liyuj/blog/1602366

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值