【Springboot】集成kafka消息队列

132 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第28天,点击查看活动详情

在此之前学习了kafka在Linux服务器上的安装与配置,但是要让一个技术中间件落地的话,最终还是需要把它集成到我们的项目中去,今天就来配置学习Springboot集成kafka消息队列。Springboot的搭建简单方便,这里就把框架的搭建过程略过,直接进行kafka集成。

引入maven

将kafka坐标加入项目中pom.xml。

<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka</artifactId>
</dependency>

生产者

修改生产者配置文件

# 应用名称
spring.application.name=springboot_kafka

# 指定 kafka 的地址
spring.kafka.bootstrap-servers=IP

#指定 key 的序列化器
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer

#指定value的序列化器
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
  • bootstrap-servers:连接kafka的地址,多个地址用逗号分隔。

  • retries:若设置大于0的值,客户端会将发送失败的记录重新发送。

  • buffer-memory:Producer用来缓冲等待被发送到服务器的记录的总字节数,33554432是缺省配置。

  • key-serializer:关键字的序列化类。

  • value-serializer:值的序列化类。

创建生产者代码

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ProducerController {


    @Autowired
    KafkaTemplate<String, String> kafka;

    @RequestMapping("/kafkaProudcer")
    public String data(String msg) {

        kafka.send("first", msg);

        return "ok";

    }
}

消费者

修改消费者配置文件

# 指定 kafka 的地址
spring.kafka.bootstrap-servers=IP

# 指定 key 的反序列化器
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserial

izer
# 指定 value 的反序列化器
spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserial

izer

#指定消费者组的 group_id
spring.kafka.consumer.group-id=test

  • group-id:消费者组的group_id。

  • key-deserializer:关键字的反序列化类。

  • value-deserializer:值的反序列化类。

创建消费者代码

import org.springframework.context.annotation.Configuration;
import org.springframework.kafka.annotation.KafkaListener;

@Configuration
public class KafkaConsumer {

    // 指定要监听的 topic
    @KafkaListener(topics = "first")
    public void consumeTopic(String msg) { // 参数: 收到的 value
        System.out.println("收到的信息: " + msg);
    }
}

启动项目后就可以通过postman调用接口来进行测试了。