史上最差的kafka教程第四天(spring整合kafka)
导入依赖
<dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>2.4.0</version> </dependency> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-streams</artifactId> <version>2.4.0</version> </dependency> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> <version>2.4.3.RELEASE</version> </dependency>
配置可以采用之前的KafkaConfiguration
生产者
@RestController public class KafkaController { @Autowired private KafkaTemplate<String,Object> kafkaTemplate; @PostMapping("/user/save") public boolean saveUser(@RequestBody User user){ kafkaTemplate.send("userTopic",user); return true; } }
消费者
@Component public class ConsumerListener { @KafkaListener(id="demo",topics = "userTopic") public void onMessage(User user){ //insertIntoDb(buffer);//这里为插入数据库代码 System.out.println(user); } }
指定分区消费者
@Component public class ConsumerListener {
@KafkaListener(topicPartitions =
{ @TopicPartition(topic = "testTopic",
partitions = { "0", "2" }))
public void onMessage(User user){ /
System.out.println(user); } }
手动提交offset(假设消费异常,本次offset不提交,重启服务后会重新消费,或者采用定时器定时重启监听器,后续会写一个通用的spring-kafka可用方案)
首先修改KafkaConfiguration类的consumerProps的offset自动提交属性改为false
1 | props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, false ); |
@Component
public class ConsumerListener {
@KafkaListener(topics = "userTopic")
public void onMessage(ConsumerRecord consumerRecord, Acknowledgment ack){
Object value = consumerRecord.value();
if (null == value) {
log.error("kafka消费数据为空");
}
log.info("KafkaConsumer1 消费者开始消费接受到的数据》》》》》》》》"+(String) value.toString());
ack.acknowledge();
}
}
分类:
kafka
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现