上篇文章中的案例使用的是starte内置的KafkaTemplate,收发消息的类型都是String类型,那能不能直接收发POJO类型的消息呢?
比如,我们有一个POJO类:
java
public record Greeting(String msg, String name) {}
我们要实现的效果是,发送消息的时候,直接发送Greeting对象,接收消息的时候直接接收Greeting对象,例如:
java
//生产者
@GetMapping("/send/pojo")
public void sendPojo(){
Greeting greeting = new Greeting("this is a message", "xjs1919");
// 直接发送Greeting对象
objectKafkaTemplate.send("pojo-topic", greeting);
log.info("send Greeting message:{}", greeting);
}
// 消费者
@Service
public class QuickConsumer {
@KafkaListener(topics = "pojo-topic")
// 接收的时候直接使用Greeting对象接收
public void onPojoMessage(Greeting greeting){
log.info("on pojo message:{}", greeting);
}
}
完整的源码下载请关注公众号"爪哇优太儿 ",发送消息"kafka"。