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


声明:本文转载自https://my.oschina.net/liyuj/blog/1602366,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

很多时候,出于开发和测试的需要,或者希望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(); 

因为依赖关系的原因,应该在启动完Zookeeper之后再启动Kafka。 对应的pom.xml文件如下:

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

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

本文发表于2018年01月04日 18:32
(c)注:本文转载自https://my.oschina.net/liyuj/blog/1602366,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 1744 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1