kafka搭建

JDK已经安装好

 

准备安装包

 

将安装包解压

 

查看安装包

 

创建一个数据目录

 

配置环境变量

编辑文件

 

添加内容

 

配置生效

 

启动之前要先启动zookeeper服务器,zookeeper是为kafka提高协调服务的工具。kafka已经内置了一个zookeeper服务器以及一些启动脚本

编辑配置文件zookeeper.properties

 

配置内容

dataDir=/usr/local/kafka_2.12-1.0.0/data/

clientPort=2181

 

启动zookeeper

./zookeeper-server-start.sh ../config/zookeeper.properties

 

启动好zookeeper以后,然后启动kafka服务器

注意:为了启动kafka服务器,要保证刚才启动的zookeeper终端不被关闭。打开一个新的终端

./kafka-server-start.sh ../config/server.properties

 

[KafkaServer id=0] started (kafka.server.KafkaServer)说明kafka服务器启动成功,默认的服务端口是9092

 

查看端口

 

服务器启动后,我们需要创建一个主题(topic)用于消息的发送和接受。

创建一个名称为test的topic

注意:为了要创建topic,要保证刚才启动的zookeeper和kafka的终端不被关闭。打开一个新的终端

测试:该topic只有一个分区(partition),且该partition也只有一个副本(replica)处理消息

命令:./kafka-topics.sh --create --zookeeper localhost:2181 --topic test --partitions 1 --replication-factor 1

 

查看该topic的状态

./kafka-topics.sh --describe --zookeeper localhost:2181 --topic test

 

发送消息,即生产消息。kafka默认提供了脚本工具可以不断的接受标准输入并将他们发送到kafka的某个topic上面,用户在控制台终端下启动该命令,输入一行文本数据,然后该脚本将该行文本封装成一条kafka消息发送给指定的topic。打开新的终端,执行命令

./kafka-console-producer.sh --broker-list localhost:9092 --topic test

 

消费消息,消费者,kafka提供了一对应的脚本用于消费某些topic下的消息并打印到标准输出。打开新的终端。执行如下命令

./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

 

两边可以输

### Java与Kafka集成环境配置 #### 准备工作 为了成功搭建Java与Kafka的集成开发环境,需先安装并启动Kafka服务器[^1]。这一步骤确保本地或远程环境中存在可用的Kafka服务。 对于Maven项目而言,在`pom.xml`文件中加入如下依赖来引入Kafka客户端库: ```xml <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>2.1.1</version> </dependency> ``` 此操作使得开发者能够在应用程序里轻松调用Kafka API进行消息发送和接收功能实现[^3]。 #### Kafka生产者示例代码 下面展示了一个简单的Kafka生产者的例子,用于向指定主题发布消息: ```java import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.clients.producer.ProducerRecord; import java.util.Properties; public class SimpleProducer { public static void main(String[] args) { Properties props = new Properties(); props.put("bootstrap.servers", "localhost:9092"); props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); try (KafkaProducer<String, String> producer = new KafkaProducer<>(props)) { for (int i = 0; i < 10; ++i) { producer.send(new ProducerRecord<>("test-topic", Integer.toString(i), "message-" + i)); } } catch (Exception e) { System.err.println(e.getMessage()); } } } ``` 这段程序创了一个到Kafka broker的连接,并连续发出十条记录至名为`test-topic`的主题上。 #### Kafka消费者示例代码 同样地,这里给出一段基本的Kafka消费者的样例代码片段,它可以从特定主题订阅数据流并打印出来: ```java import org.apache.kafka.clients.consumer.ConsumerRecords; import org.apache.kafka.clients.consumer.KafkaConsumer; import java.time.Duration; import java.util.Collections; import java.util.Properties; public class SimpleConsumer { public static void main(String[] args) { Properties props = new Properties(); props.put("bootstrap.servers", "localhost:9092"); props.put("group.id", "test-group"); props.put("enable.auto.commit", "true"); props.put("auto.commit.interval.ms", "1000"); props.put("session.timeout.ms", "30000"); props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); try (KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props)) { consumer.subscribe(Collections.singletonList("test-topic")); while (true) { ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100)); for (var record : records) { System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value()); } } } catch (Exception e) { System.err.println(e.getMessage()); } } } ``` 上述脚本设置好必要的参数之后便进入无限循环监听模式等待新消息的到来,一旦接收到就会立即处理显示在控制台上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值