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

相关推荐
他是龙5511 天前
48:文件上传漏洞进阶(中间件/CMS/第三方编辑器)
中间件·编辑器
步步为营DotNet1 天前
深度探索ASP.NET Core中间件的错误处理机制:保障应用程序稳健运行
后端·中间件·asp.net
zwxu_2 天前
中间件磁盘满P0事故解决方案分享
中间件
Wnq100722 天前
新型基于“去中心化分布式Agent“技术的操作系统DIOS
分布式·嵌入式硬件·中间件·架构·云计算·去中心化·信息与通信
计算机小手2 天前
使用轻量级中间件 VoidAuth 快速构建站点SSO,支持Docker一键部署与Nginx快速接入
经验分享·docker·中间件·开源软件
hzk的学习笔记2 天前
RocketMQ 的架构
中间件·消息队列·rocketmq
bluechips·zhao3 天前
中间件及框架漏洞详解(Nginx、Apache、Tomcat、Redis、Zookeeper、RabbitMQ、Kafka等)
nginx·web安全·网络安全·中间件·apache·网络攻击模型·java-rabbitmq
- 总有一天你会出现在我身边3 天前
windows版中间件启动
windows·中间件
Thuni_soft3 天前
权威认证!华宇TAS应用中间件成功通过国家标准测试
中间件
音符犹如代码4 天前
ZooKeeper 实战指南:从入门到场景解析
分布式·微服务·zookeeper·云原生·中间件·架构