消息中间件-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代码的方式更加直观。

相关推荐
安全系统学习1 小时前
网络安全逆向分析之rust逆向技巧
前端·算法·安全·web安全·网络安全·中间件
NoneCoder5 小时前
Redux 实践与中间件应用
前端·react.js·中间件·面试
淡水猫.5 小时前
Next.js 中间件鉴权绕过漏洞 CVE-2025-29927
javascript·安全·web安全·中间件
vvilkim2 天前
ASP.NET Core 中间件深度解析:构建灵活高效的请求处理管道
后端·中间件·asp.net
厚衣服_32 天前
第5篇《中间件负载均衡与连接池管理机制设计》
运维·中间件·负载均衡
老K(郭云开)3 天前
allWebPlugin中间件VLC专用版之截图功能介绍
前端·javascript·chrome·中间件·edge
Java小后生3 天前
基于Java的OPCDA采集中间件
中间件·opcda
安全系统学习3 天前
内网横向之RDP缓存利用
前端·安全·web安全·网络安全·中间件
健康平安的活着3 天前
mysql数据库实现分库分表,读写分离中间件sharding-sphere
数据库·mysql·中间件
厚衣服_34 天前
第1篇:数据库中间件概述:架构演进、典型方案与应用场景
数据库·中间件·架构