kafka服务端和springboot中使用

kafka服务端和springboot中使用

一、kafka-sever安装使用

下载kafka-server

https://kafka.apache.org/downloads.html

启动zookeeper
xml 复制代码
zookeeper-server-start.bat config\zookeeper.properties	
启动kafka-server
xml 复制代码
kafka-server-start.bat config\server.properties
创建主题
xml 复制代码
kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
查看主题列表
xml 复制代码
kafka-topics.bat --list --bootstrap-server localhost:9092
创建生产者
xml 复制代码
kafka-console-producer.bat --broker-list localhost:9092 --topic test

在生产者控制台可以发消息

创建消费者
xml 复制代码
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning   

在消费者端可以收消息

查看主题详情
xml 复制代码
kafka-topics.bat --describe --bootstrap-server localhost:9092 --topic test
删除主题
xml 复制代码
kafka-delete-records.bat --bootstrap-server localhost:9092 --offset-json-file d:\delete_script.json

二、springboot中使用kafka

在Spring Boot中使用Kafka,你可以通过集成spring-kafka库来实现。这个库提供了对Apache Kafka的全面支持,包括生产者和消费者的功能。

添加依赖

首先,在你的pom.xml文件中添加以下依赖:

xml 复制代码
<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka</artifactId>
</dependency>
配置Kafka属性

在application.properties或application.yml文件中配置Kafka的相关属性。这里以application.properties为例:

properties 复制代码
# Kafka Producer Configuration
spring.kafka.producer.bootstrap-servers=localhost:9092
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer

# Kafka Consumer Configuration
spring.kafka.consumer.bootstrap-servers=localhost:9092
spring.kafka.consumer.group-id=my-group
spring.kafka.consumer.auto-offset-reset=earliest
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer
创建消息生产者

创建一个类用于发送消息到Kafka主题:

java 复制代码
package space.goldchen.kafka.kafka;


import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Service;
/**
 * kafka生产者
 * @author 2021
 * @create 2025-04-16 16:27
 */
@Service
@Slf4j
public class KafkaProducer {

    @Resource
    private KafkaTemplate<String, String> kafkaTemplate;

    /**
     * 发送消息
     * @param topic 主题
     * @param message 要发送的消息
     */
    public void sendMessage(String topic, String message) {
        kafkaTemplate.send(topic, message);
        // 用log.info重写下边的日志
        log.info("Message sent to topic: {}, Message:{}" , topic, message);
    }
}
创建消息消费者

创建一个类用于从Kafka主题接收消息:

java 复制代码
package space.goldchen.kafka.kafka;


import lombok.extern.slf4j.Slf4j;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Service;
/**
 * kafka消费者
 *
 * @author 2021
 * @create 2025-04-16 16:28
 */

@Service
@Slf4j
public class KafkaConsumer {
    /**
     * my-topic 消费者消费消息
     * @param message
     */
    @KafkaListener(topics = "my-topic", groupId = "my-consumer-group")
    public void consume(String message) {
        log.info("[my-topic]Received message: {}", message);
    }
}
测试Kafka集成

最后,编写一个简单的测试类来验证Kafka的生产和消费功能:

java 复制代码
package space.goldchen.kafka.kafka;

/**
 * kafka接口,调用生产者发送消息
 * @author 2021
 * @create 2025-04-16 16:28
 */

import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class KafkaController {

    @Resource
    private KafkaProducer kafkaProducer;

    /**
     * 使用KafkaProducer发送消息
     * @param message
     * @return
     */
    @GetMapping("/send")
    public String sendMessage(@RequestParam String message) {
        kafkaProducer.sendMessage("my-topic", message);
        return "Message sent: " + message;
    }
}

以上代码展示了如何在Spring Boot应用程序中配置和使用Kafka。确保你已经在本地或其他环境中启动了Kafka服务器,并且监听端口为9092(或者根据实际情况调整配置)

相关推荐
砍材农夫2 小时前
物联网实战:Spring Boot MQTT | MQTT 设备模拟器演示(附源码)
java·spring boot·后端·物联网·spring·netty
YDS8292 小时前
DeepSeek RAG&MCP + Agent智能体项目 —— Agent执行链路设计之ReAct Loop
java·spring boot·ai·agent·deepseek
一 乐4 小时前
人口老龄化社区服务与管理平台|基于springboot+vue的人口老龄化社区服务与管理平台(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·人口老龄化社区服务与管理平台
ss2736 小时前
ai编程Trae cn生成图书管理系统(1)
java·数据库·spring boot·python·flask·fastapi
坤昱6 小时前
cfs调度类深入解刨——最新内核细节分析5
linux·分布式·cfs调度·eevdf调度·linux调度·linux技术·kernel最新版本内容
AI人工智能+电脑小能手6 小时前
【大白话说Java面试题 第91题】【Mysql篇】第21题:分布式锁的使用场景和原理?
java·数据库·分布式·mysql·面试
JAVA社区6 小时前
Java高级全套教程(十三)—— 分布式锁超详细实战详解(原理+三种方案企业级落地)
java·开发语言·分布式·spring cloud·面试·java-zookeeper
Leo1877 小时前
分布式事务
java·分布式·分布式事务
小马爱打代码7 小时前
SpringBoot + 延迟消息 + 时间轮:订单超时、优惠券过期等场景的高效实现方案
java·spring boot·后端
Bat U8 小时前
JavaEE|SpringBoot快速入门
spring boot·java-ee·mybatis