Spring Boot整合Kafka的详细步骤

1. 安装Kafka

  1. 下载Kafka:从Kafka官网下载最新版本的Kafka。

  2. 解压并启动

    • 解压Kafka文件后,进入bin目录。

    • 启动ZooKeeper:./zookeeper-server-start.sh ../config/zookeeper.properties

    • 启动Kafka:./kafka-server-start.sh ../config/server.properties

    • 确认启动成功后,Kafka服务即可使用。

2. 创建Spring Boot项目

  1. 在Spring Initializr创建一个新项目,选择需要的依赖(如Spring Web和Spring Kafka)。

  2. 下载并解压项目,导入到IDE中。

3. 添加Kafka依赖

pom.xml中添加以下依赖:

XML 复制代码
<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka</artifactId>
</dependency>

这个依赖会自动配置Spring Kafka的相关组件。

4. 配置Kafka

application.yml中添加Kafka的配置:

bash 复制代码
spring:
  kafka:
    bootstrap-servers: localhost:9092
    consumer:
      group-id: my-group
      auto-offset-reset: earliest
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
    producer:
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer

这里配置了Kafka服务器地址、消费者组、序列化器等。

5. 创建Kafka生产者

  1. 创建生产者配置类
java 复制代码
@Configuration
public class KafkaProducerConfig {
    @Bean
    public ProducerFactory<String, String> producerFactory() {
        Map<String, Object> configProps = new HashMap<>();
        configProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
        configProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
        configProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
        return new DefaultKafkaProducerFactory<>(configProps);
    }

    @Bean
    public KafkaTemplate<String, String> kafkaTemplate() {
        return new KafkaTemplate<>(producerFactory());
    }
}
  1. 创建生产者服务类
java 复制代码
@Service
public class KafkaProducerService {
    @Autowired
    private KafkaTemplate<String, String> kafkaTemplate;

    public void sendMessage(String topic, String message) {
        kafkaTemplate.send(topic, message).addCallback(
            success -> System.out.println("Message sent successfully: " + message),
            failure -> System.err.println("Failed to send message: " + failure.getMessage())
        );
    }
}

通过KafkaTemplate发送消息。

6. 创建Kafka消费者

  1. 创建消费者服务类
java 复制代码
@Service
public class KafkaConsumerService {
    @KafkaListener(topics = "my-topic", groupId = "my-group")
    public void consume(String message) {
        System.out.println("Received message: " + message);
    }
}

使用@KafkaListener注解监听指定主题并接收消息。

7. 测试应用

  1. 创建一个控制器,用于发送消息:
java 复制代码
@RestController
public class KafkaController {
    private final KafkaProducerService kafkaProducerService;

    public KafkaController(KafkaProducerService kafkaProducerService) {
        this.kafkaProducerService = kafkaProducerService;
    }

    @GetMapping("/send")
    public String sendMessage(@RequestParam String message) {
        kafkaProducerService.sendMessage("my-topic", message);
        return "Message sent";
    }
}
  1. 启动Spring Boot应用 ,通过访问http://localhost:8080/send?message=HelloKafka发送消息。

通过以上步骤,你可以在Spring Boot中成功集成并使用Kafka。

相关推荐
抹香鲸之海1 小时前
Prometheus+Grafana实现Springboot服务监控
spring boot·grafana·prometheus
摇滚侠1 小时前
Spring Boot 3零基础教程,WEB 开发 内嵌服务器底层源码分析 笔记48
spring boot·笔记
Tony Bai2 小时前
【Go 网络编程全解】12 本地高速公路:Unix 域套接字与网络设备信息
开发语言·网络·后端·golang·unix
萌新小码农‍2 小时前
SpringBoot+alibaba的easyexcel实现前端使用excel表格批量插入
前端·spring boot·excel
韩立学长3 小时前
【开题答辩实录分享】以《租房小程序的设计和实现》为例进行答辩实录分享
java·spring boot·小程序
zl9798993 小时前
SpringBoot-数据访问之MyBatis与Redis
java·spring boot·spring
重生之我是Java开发战士3 小时前
【Java EE】快速上手Spring Boot
java·spring boot·java-ee
Yeats_Liao4 小时前
Go Web 编程快速入门 06 - 响应 ResponseWriter:状态码与头部
开发语言·后端·golang
mit6.8244 小时前
[Agent可视化] 编排工作流(Go) | Temporal引擎 | DAG调度器 | ReAct模式实现
开发语言·后端·golang
猪哥-嵌入式5 小时前
Go语言实战教学:从一个混合定时任务调度器(Crontab)深入理解Go的并发、接口与工程哲学
开发语言·后端·golang