SpringBoot如何集成kafka

225 阅读1分钟

要在Spring Boot中集成Kafka,可以按照以下步骤进行操作:

  1. 添加Kafka依赖: 在pom.xml中添加以下依赖:

    <dependency>
        <groupId>org.springframework.kafka</groupId>
        <artifactId>spring-kafka</artifactId>
    </dependency>
    
  2. 配置Kafka连接信息: 在application.propertiesapplication.yml中添加Kafka相关的配置信息,包括Kafka服务器地址和端口:

    spring.kafka.bootstrap-servers=localhost:9092
    
  3. 创建Kafka生产者: 创建一个Kafka生产者的Bean,可以使用KafkaTemplate来封装发送消息的逻辑:

    @Configuration
    public class KafkaProducerConfig {
        
        @Bean
        public KafkaTemplate<String, String> kafkaTemplate() {
            return new KafkaTemplate<>(producerFactory());
        }
        
        @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);
        }
        
    }
    
  4. 创建Kafka消费者: 创建一个Kafka消费者的Bean,可以使用@KafkaListener注解来定义消费者监听的主题和处理逻辑:

    @Component
    public class KafkaConsumer {
        
        @KafkaListener(topics = "test")
        public void listen(String message) {
            System.out.println("Received message: " + message);
            // 处理收到的消息
        }
        
    }
    
  5. 发布消息: 在需要发布消息的地方,通过自动注入KafkaTemplate来发送消息:

    @Autowired
    private KafkaTemplate<String, String> kafkaTemplate;
    
    public void sendMessage(String message) {
        kafkaTemplate.send("test", message);
    }
    

这样,你就成功在Spring Boot中集成了Kafka。可以根据需要进行进一步的配置和使用,例如设置消息序列化方式、消费者的分组ID等。