Spring Kafka 学习记录1

文章讲述了作者在学习SpringKafka示例时,发现`Sample-01`中的不同类对象能被正确反序列化,原因是`KafkaListener`基于方法定义进行类型转换。而在`Sample-02`中,使用类级别的`KafkaListener`和默认JSON映射导致了不同的行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# 学习Spring Kafka 官方例子时遇到的问题

https://github.com/spring-projects/spring-kafka/tree/main/samples

我注意到sample-01 中,发送的类是Foo1

而消费的类是Foo2

觉得很神奇,猜想完成类型转换的过程一定是某种模糊的、方法反射型的方式完成的。于是继续学习sample-02

当我尝试将sample-02当中的序列化/反序列化修改为类似sample-01的方式,我发现并不能正确的将Foo1的内容消费

看了文档才了解到@KafkaListener用在方法上时,框架做类型转换时会优先参考方法定义(也就是参数的类型)。这解释了sample-01为什么可以做到类不同也能反序列化。

sample-02采用的是类级别的@KafkaListener,所以@KafkaHandler会按照类型进行匹配。由于默认会把JSON消息反序列化为Map,所以消费落在了@KafkaHandler(isDefault = true)上

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值