使用 Kafka

1. 引入 Kafka 依赖

pom.xml 文件中添加 Kafka 客户端的依赖:

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>3.0.0</version>
</dependency>

2. 配置 Kafka 无需 Zookeeper 模式

在 Kafka 2.8.0 及更高版本中,可以选择不使用 Zookeeper 运行 Kafka。

配置文件 server.properties

process.roles=broker,controller
node.id=1
controller.quorum.voters=1@localhost:9093
listeners=PLAINTEXT://localhost:9092,CONTROLLER://localhost:9093
inter.broker.listener.name=PLAINTEXT
log.dirs=/tmp/kraft-combined-logs

3. 启动 Kafka 服务器

使用以下命令启动 Kafka 服务器:

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

4. 创建 Kafka 主题

使用命令行工具创建主题:

kafka-topics.sh --create --topic my-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1

5. 配置 Kafka 生产者

编写 Kafka 生产者代码,用于发送消息:

import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.ProducerRecord;

import java.util.Properties;

public class KafkaProducerExample {
    public static void main(String[] args) {
        Properties props = new Properties();
        props.put("bootstrap.servers", "localhost:9092");
        props.put("acks", "all");
        props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

        Producer<String, String> producer = new KafkaProducer<>(props);
        for (int i = 0; i < 10; i++) {
            producer.send(new ProducerRecord<>("my-topic", Integer.toString(i), "message-" + i));
        }

        producer.close();
    }
}

6. 配置 Kafka 消费者

编写 Kafka 消费者代码,用于接收消息:

import org.apache.kafka.clients.consumer.ConsumerRecord;
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 KafkaConsumerExample {
    public static void main(String[] args) {
        Properties props = new Properties();
        props.put("bootstrap.servers", "localhost:9092");
        props.put("group.id", "test-group");
        props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
        props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");

        KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
        consumer.subscribe(Collections.singletonList("my-topic"));

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

总结

  1. 引入 Kafka 依赖:在 Maven 项目中添加 Kafka 客户端依赖。
  2. 配置 Kafka:配置 Kafka 以无需 Zookeeper 模式运行。
  3. 启动 Kafka 服务器:使用配置启动 Kafka 服务器。
  4. 创建 Kafka 主题:使用命令行工具创建主题。
  5. 编写 Kafka 生产者代码:发送消息到 Kafka 主题。
  6. 编写 Kafka 消费者代码:从 Kafka 主题接收消息。

通过以上步骤,你可以在 Java 中成功配置并使用无需 Zookeeper 的 Kafka (KRaft 模式)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值