携手创作,共同成长!这是我参与「掘金日新计划 · 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调用接口来进行测试了。