kafka java示例,kafka java示例

1) Producer端使用zookeeper用来"发现"broker列表,以及和Topic下每个partition leader建立socket连接并发送消息.

2) Broker端使用zookeeper用来注册broker信息,已经监测partition leader存活性.

3) Consumer端使用zookeeper用来注册consumer信息,其中包括consumer消费的partition列表等,同时也用来发现broker列表,并和partition leader建立socket连接,并获取消息.

一.Zookeeper集群构建

我们有3个zk实例,分别为zk-0,zk-1,zk-2;如果你仅仅是测试使用,可以使用1个zk实例.

1) zk-0

调整配置文件:

Php代码

0818b9ca8b590ca3270a3433284dd417.png

clientPort=2181

server.0=127.0.0.1:2888:3888

server.1=127.0.0.1:2889:3889

server.2=127.0.0.1:2890:3890

##只需要修改上述配置,其他配置保留默认值

启动zookeeper

Java代码

0818b9ca8b590ca3270a3433284dd417.png

./zkServer.sh start

2) zk-1

调整配置文件(其他配置和zk-0一只):

Php代码

0818b9ca8b590ca3270a3433284dd417.png

clientPort=2182

##只需要修改上述配置,其他配置保留默认值

启动zookeeper

Java代码

0818b9ca8b590ca3270a3433284dd417.png

./zkServer.sh start

3) zk-2

调整配置文件(其他配置和zk-0一只):

Php代码

0818b9ca8b590ca3270a3433284dd417.png

clientPort=2183

##只需要修改上述配置,其他配置保留默认值

启动zookeeper

Java代码

0818b9ca8b590ca3270a3433284dd417.png

./zkServer.sh start

二. Kafka集群构建

因为Broker配置文件涉及到zookeeper的相关约定,因此我们先展示broker配置文件.我们使用2个kafka broker来构建这个集群环境,分别为kafka-0,kafka-1.

1) kafka-0

在config目录下修改配置文件为:

Java代码

0818b9ca8b590ca3270a3433284dd417.png

broker.id=0

port=9092

num.network.threads=2

num.io.threads=2

socket.send.buffer.bytes=1048576

socket.receive.buffer.bytes=1048576

socket.request.max.bytes=104857600

log.dir=./logs

num.partitions=2

log.flush.interval.messages=10000

log.flush.interval.ms=1000

log.retention.hours=168

#log.retention.bytes=1073741824

log.segment.bytes=536870912

##replication机制,让每个topic的partitions在kafka-cluster中备份2个

##用来提高cluster的容错能力..

default.replication.factor=1

log.cleanup.interval.mins=10

zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183

zookeeper.connection.timeout.ms=1000000

因为kafka用scala语言编写,因此运行kafka需要首先准备scala相关环境。

Java代码

0818b9ca8b590ca3270a3433284dd417.png

> cd kafka-0

> ./sbt update

> ./sbt package

> ./sbt assembly-package-dependency

其中最后一条指令执行有可能出现异常,暂且不管。 启动kafka broker:

Java代码

0818b9ca8b590ca3270a3433284dd417.png

> JMS_PORT=9997 bin/kafka-server-start.sh config/server.properties &

因为zookeeper环境已经正常运行了,我们无需通过kafka来挂载启动zookeeper.如果你的一台机器上部署了多个kafka broker,你需要声明JMS_PORT.

2) kafka-1

Java代码

0818b9ca8b590ca3270a3433284dd417.png

broker.id=1

port=9093

##其他配置和kafka-0保持一致

然后和kafka-0一样执行打包命令,然后启动此broker.

Java代码

0818b9ca8b590ca3270a3433284dd417.png

> JMS_PORT=9998 bin/kafka-server-start.sh config/server.properties &

仍然可以通过如下指令查看topic的"partition"/"replicas"的分布和存活情况.

Java代码

0818b9ca8b590ca3270a3433284dd417.png

> bin/kafka-list-topic.sh --zookeeper localhost:2181

topic: my-replicated-topic  partition: 0    leader: 2   replicas: 1,2,0 isr: 2

topic: test partition: 0    leader: 0   replicas: 0 isr: 0

到目前为止环境已经OK了,那我们就开始展示编程实例吧。[配置参数详解]

你可能感兴趣的:(kafka,java示例)