Kafka之安装本地windows环境

本文介绍了如何下载并启动Kafka服务,包括Zookeeper和Broker的启动。接着创建了一个Topic,并通过控制台生产者和消费者发送与接收消息。还提供了Java代码示例,展示了如何使用Kafka的生产者和消费者API发送和接收消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 下载最新的Kafka版本并提取:

解压kafka_2.13-3.5.0.tgz。

2. 启动Kafka服务

注意:您的本地环境必须安装Java 8+。

1 启动zookeeper服务

cd kafka_2.13-3.5.0/bin/windows
zookeeper-server-start.bat ../../config/zookeeper.properties

2. 启动Kafka broker 服务

cd kafka_2.13-3.5.0/bin/windows
kafka-server-start.bat ../../config/server.properties

好了,你现在有了一个基本的Kafka环境了

3. 创建一个Topic来存储消息


KAFKA是一个分布式事件流平台,可让您跨许多机器阅读,写作,存储和处理事件(也称为文档中的记录或消息)。

示例活动是付款交易,手机的地理位置更新,运输订单,物联网设备或医疗设备的传感器测量等等。 这些事件是组织并存储在主题中的。 非常简化,主题类似于文件系统中的文件夹,事件是该文件夹中的文件。

因此,在您编写第一个事件之前,您必须创建一个Topic。 打开另一个终端会话并运行:

kafka-topics.bat --create --topic quickstart-events --bootstrap-server localhost:9092

结果:

Created topic quickstart-events.

Kafka的所有命令行工具都有其他选项:运行Kafka-Topics.sh命令,而无需任何参数以显示用法信息。 例如,它还可以向您显示诸如新Topic的分区计数之类的详细信息:

kafka-topics.bat --describe --topic quickstart-events --bootstrap-server localhost:9092

结果

Topic: quickstart-events        TopicId: iQ9QVKwkQ1epRjA-BnvxvA PartitionCount: 1       ReplicationFactor: 1    Configs:
        Topic: quickstart-events        Partition: 0    Leader: 0       Replicas: 0     Isr: 0

4. 写消息到Topic里

KAFKA客户端通过网络进行写作(或阅读)事件与Kafka经纪人进行通信。 收到后,经纪人将在您需要的时间内以持久和耐受性的方式存储活动。

运行控制台生产者客户端以将一些事件写入您的Topic。 默认情况下,您输入的每一行都将导致将单独的事件写入Topic。

kafka-console-producer.bat --topic quickstart-events --bootstrap-server localhost:9092
This is my first event
This is my second event

您可以随时使用CTRL-C停止生产者客户端。

Java实现发送消息

pom.xml

<dependency>
      <groupId>org.apache.kafka</groupId>
      <artifactId>kafka-clients</artifactId>
       <version>3.4.1</version>
 </dependency>
	Properties props = new Properties();
	props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
	props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,org.apache.kafka.common.serialization.StringSerializer.class);
	props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, org.apache.kafka.common.serialization.StringSerializer.class);

	KafkaProducer producer = new KafkaProducer(props);

	try {
	    for (int i =0 ; i <100; i++) {
		String key = "key"+i;
		String message = "message"+i;

		ProducerRecord<Object, Object> record = new ProducerRecord<>("topic1", key, message);
		try {
		    System.out.println("sending message"+i);
		    producer.send(record);
		} catch(SerializationException e) {
		    e.printStackTrace();
		}
	    }
	}finally {
	    producer.flush();
	    producer.close();
	}

5. 读消息

打开另一个终端会话并运行控制台消费者客户端以阅读您刚创建的事件:

kafka-console-consumer.bat --topic quickstart-events --from-beginning --bootstrap-server localhost:9092
This is my first event
This is my second event

您可以随时使用CTRL-C停止消费者客户端。

随意进行实验:例如,切换回制作者终端(上一步)以编写其他事件,并查看这些事件如何立即显示在您的消费者终端中。

由于事件持久存储在Kafka中,因此可以随意阅读尽可能多的消费者。 您可以通过打开另一个终端会话并再次重新运行上一个命令来轻松验证这一点。

Java 代码实现读取消息

    Properties props = new Properties();

	props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
	props.put(ConsumerConfig.GROUP_ID_CONFIG, "group1");
	props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");
	props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");
	props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");

     String topic = "quickstart-events";
     final Consumer<String, String> consumer = new KafkaConsumer<String, String>(props);
     consumer.subscribe(Arrays.asList(topic));


        try {
            while (true) {
                ConsumerRecords<String, String> records = consumer.poll(100);
                for (ConsumerRecord<String, String> record : records) {
                    System.out.printf("offset = %d, key = %s, value = %s \n", record.offset(), record.key(), record.value());
                }
            }
        } finally {
            consumer.close();
        }

6. 列出所有的topics.

根据zookeeper

./bin/kafka-topics.sh --list --zookeeper localhost:2181

根据 Kafka server

./bin/kafka-topics.sh --bootstrap-server=localhost:9092 --list

参考资料

https://kafka.apache.org/quickstart

https://codenotfound.com/spring-kafka-apache-avro-serializer-deserializer-example.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

茫茫人海一粒沙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值