spring boot 结合 kafaka
Spring Boot 可以与 Apache Kafka 集成:
添加 Maven 依赖:
Spring Boot 项目的 pom.xml 文件中添加以下 Maven 依赖:
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>2.8.1</version> <!-- 根据实际情况使用最新版本 -->
</dependency>
配置 Kafka 连接:
在 application.properties 或 application.yml 文件中配置 Kafka 的连接信息:
application.properties:
spring.kafka.bootstrap-servers=localhost:9092
spring.kafka.consumer.group-id=my-group-id
spring.kafka.consumer.auto-offset-reset=earliest
application.yml:
yaml
spring:
kafka:
bootstrap-servers: localhost:9092
consumer:
group-id: my-group-id
auto-offset-reset: earliest
创建 Kafka Producer:
创建一个继承自 org.springframework.kafka.core.KafkaTemplate 的自定义类,并重写 send() 方法。在 send() 方法中,将消息发送到 Kafka:
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Service;
@Service
public class KafkaProducer {
private final KafkaTemplate<String, String> kafkaTemplate;
@Autowired
public KafkaProducer(KafkaTemplate<String, String> kafkaTemplate) {
this.kafkaTemplate = kafkaTemplate;
}
public void sendMessage(String topic, String message) {
kafkaTemplate.send(topic, message);
}
}
创建 Kafka Consumer:
创建一个实现 org.springframework.kafka.core.ConsumerRecordHandler 接口的自定义类,并重写 handle() 方法。在 handle() 方法中,处理接收到的 Kafka 消息。例如:
import org.springframework.kafka.core.ConsumerRecordHandler;
import org.springframework.stereotype.Service;
@Service
public class KafkaConsumer implements ConsumerRecordHandler<String, String> {
@Override
public void handle(ConsumerRecord<String, String> record) {
System.out.println("Received message: " + record.value());
}
}
配置 Kafka Listener:
在需要接收消息的地方,例如服务层或控制器层,注入 Kafka Consumer,并配置消息监听器。例如:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Service;
@Service
public class MyService {
private final KafkaConsumer kafkaConsumer;
@Autowired
public MyService(KafkaConsumer kafkaConsumer) {
this.kafkaConsumer = kafkaConsumer;
}
@KafkaListener(topics = "my-topic", groupId = "my-group-id")
public void listenMessage() {
kafkaConsumer.handle(new ConsumerRecord<>("my-topic", 0, 0, "", "Hello from Kafka!"));
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术