消息中间件-Kafka3-kafkaJavaClient小例

消息中间件-Kafka3-kafkaJavaClient小例

  • Kafak Java Client
java 复制代码
   private static final String KAFKA_TOPIC = "kafak-test";
   private static String bootstrapServers = "localhost:9092";

   private static AdminClient client = null;


   static {
       Properties config = new Properties();
       config.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
       client = AdminClient.create(config);
   }

在pom.xml 添加kafka client依赖

  • 客户端创建主题
java 复制代码
@Test
public  void createTopic() {
    try {
        NewTopic topic = new NewTopic(KAFKA_TOPIC, 1, (short) 1);
        // 提交创建topic请求
        client.createTopics(Collections.singleton(topic)).all().get();
        System.out.println("Topic created successfully");
    }
    catch (Exception e) {
        e.printStackTrace();
    }
    finally {
        if (client != null) client.close();
    }
}
  • 客户端获取主题
java 复制代码
@Test
public  void fetchTopics() {
     try {
         ListTopicsResult result = client.listTopics();
         KafkaFuture<Set<String>> set = result.names();
         System.out.println(set.get());
     }
     catch (Exception e) {
         e.printStackTrace();
     }
     finally {
         if (client != null) client.close();
     }
 }
  • 客户端生产者发送消息
java 复制代码
@Test
public  void produceMsg() {
    Properties props = new Properties();
    props.put("bootstrap.servers", "localhost:9092"); // Kafka集群地址
    props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
    props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

    Producer<String, String> producer = null;
    try {

        // 创建生产者实例
        producer = new KafkaProducer<>(props);

        // 发送消息
        producer.send(new ProducerRecord<>(KAFKA_TOPIC, "MSG-1005","Hello, 1005!"), (metadata, exception) ->{
            if (exception == null) {
                System.out.println("消息发送成功,主题:" + metadata.topic() + ", 分区:" + metadata.partition());
            }
            else {
                exception.printStackTrace();
            }
        });
    }
    catch (Exception e) {
        e.printStackTrace();
    }
    finally {
        // 关闭生成者
        if (producer != null) producer.close();
    }
}
  • 客户端消费者消费消息
java 复制代码
@Test
public  void consumeMsg() {
   // 配置消费者
   Properties properties = new Properties();
   properties.put("bootstrap.servers", "localhost:9092");
   properties.put("group.id", "kafka-consumer-group-001");
   properties.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
   properties.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");

   KafkaConsumer<String, String> consumer = null;
   try {
       // 创建消费者实例
       consumer = new KafkaConsumer<>(properties);

       // 订阅主题
       consumer.subscribe(Arrays.asList(KAFKA_TOPIC));

       // 轮询消费消息
       while(true) {
           ConsumerRecords<String, String> records = consumer.poll(100); // 每100ms执行一次
           for (ConsumerRecord record : records) {
               System.out.printf("Offset: %d, Key: %s, Value: %s\n", record.offset(), record.key(), record.value());
           }
       }
   }
   catch (Exception e) {
       e.printStackTrace();
   }
   finally {
       if (consumer != null) consumer.close();
   }
}

后续将使用这些测试小例来调试Kafka源码,当然也可以执行Kafka自带的可执行脚本与kafka交互,进行源码分析,只是通过java代码的方式更加直观。

相关推荐
晚风吹人醒.11 小时前
缓存中间件Redis安装及功能演示、企业案例
linux·数据库·redis·ubuntu·缓存·中间件
p***q7818 小时前
docker离线安装及部署各类中间件(x86系统架构)
docker·中间件·系统架构
k***z112 天前
国产化中间件东方通TongWeb环境安装部署(图文详解)
中间件
5***r9352 天前
开源数据同步中间件(Dbsyncer)简单玩一下 mysql to mysql 的增量,全量配置
mysql·中间件·开源
q***06472 天前
SocketTool、串口调试助手、MQTT中间件基础
单片机·嵌入式硬件·中间件
f***24112 天前
【中间件】Pulsar集群安装
中间件
利刃大大3 天前
【c++中间件】redis介绍 && redis-plus-plus库使用
c++·redis·中间件
晨欣4 天前
中间件:IT世界的“中场发动机”与“超级粘合剂”(Gemini 3 pro 回答)
中间件
百***93504 天前
【Golang】——Gin 框架中间件详解:从基础到实战
中间件·golang·gin
Zhao·o4 天前
KafkaMQ采集指标日志
运维·中间件·kafka