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。

相关推荐
paopaokaka_luck17 分钟前
基于Spring Boot+Vue的吉他社团系统设计和实现(协同过滤算法)
java·vue.js·spring boot·后端·spring
Flobby5291 小时前
Go语言新手村:轻松理解变量、常量和枚举用法
开发语言·后端·golang
摸鱼仙人~2 小时前
Spring Boot中的this::语法糖详解
windows·spring boot·python
Warren982 小时前
Java Stream流的使用
java·开发语言·windows·spring boot·后端·python·硬件工程
程序视点3 小时前
IObit Uninstaller Pro专业卸载,免激活版本,卸载清理注册表,彻底告别软件残留
前端·windows·后端
xidianhuihui3 小时前
go install报错: should be v0 or v1, not v2问题解决
开发语言·后端·golang
架构师沉默3 小时前
Java优雅使用Spring Boot+MQTT推送与订阅
java·开发语言·spring boot
tuokuac3 小时前
MyBatis 与 Spring Boot版本匹配问题
java·spring boot·mybatis
进击的铁甲小宝4 小时前
Django-environ 入门教程
后端·python·django·django-environ
草履虫建模4 小时前
RuoYi-Vue 项目 Docker 容器化部署 + DockerHub 上传全流程
java·前端·javascript·vue.js·spring boot·docker·dockerhub