引言
在平时,自己肯定很经常能碰到需要用到消息队列,除非你是一个刚入门的程序员,否则你肯定或多或少的要接触到像消息队列之类的技术。本篇章主要是帮助大家自己搭建好kafka的环境。
环境准备
- Zookeeper的环境(这里不涉及zookeeper的搭建,可以自己起一个)
- kafka的下载
下载链接
如果你懒,直接下载我提供的,或者自己可以去kafka的官网下载(最好养成这样的习惯,官网的才是最新的,并且最好下载beta版本,免去编译的步骤)
下载链接:
wget https://mirrors.bfsu.edu.cn/apache/kafka/2.7.0/kafka_2.12-2.7.0.tgz
下载完毕之后请自行解压
启动服务
前提:启动前先到你的对应的目录下
// 启动kafka
bin/kafka-server-start.sh config/server.properties
// 新建一个topics
bin/kafka-topics.sh --create --topic quick-events--bootstrap-server localhost:9092
// 我再新建一个topics,这次不一样的是多了一些参数(partitions 和 replication-factor 参数比较重要,生产环境一般都要设置这个)
./kafka-topics.sh --create --zookeeper 127.0.0.1:2181 --replication-factor 1 --partitions 1 --topic firsttest
// 检查下刚刚创建的是否生效
bin/kafka-topics.sh --describe --topic quick-events --bootstrap-server 127.0.0.1:9092
// 生产者写数据
bin/kafka-console-producer.sh --topic quick-events --bootstrap-server 127.0.0.1:9092
// 消费者读数据(根据是否需要从头开始读而决定是否加 --from-beginning)
bin/kafka-console-consumer.sh --topic quick-events --from-beginning --bootstrap-server localhost:9092 // 这种方式的话,是每次都从最新的开始取
做了上述的操作之后,基本上kafka的环境也已经通了,环境搭建也基本成功了。
更好的使用须知
问题一:如果我想用程序并行处理一个kafka的topics,并且不重复,如何做?
首先,你需要让你起的消费者服务都是同一个group,然后topics的partitions的配置不能为1,如果是1的话,即使你有两个服务,也只有一个服务能消费,另一个服务只有在上一个服务挂了之后才会接力。每个partition 都相当与一个有序队列,最多被同一个group中的一个消费者消费,因此避免了重复消费。
网友评论