![](/img/trans.png)
[英]How to deserialize MessagePack in Spring Cloud Stream App
[英]Spring Cloud stream deserialize different pojos
我正在使用 Kstream 來使用 kafka 消息並將其保存到我的數據庫中。 這些消息屬於不同的 pojo,目前我正在使用 object 映射器來創建 object,然后將它們保存在數據庫中。 我讀過可以使用 Jsondeserialzerserde,但我不確定如何將它用於 map 到不同的 pojo。 為每個 pojo 自定義 serde 是沒有意義的。 請幫忙。 提前致謝。
這是我的代碼:
public Consumer<KStream<String, String>> process() {
return input ->
inpu.foreach((key, value) -> {
ObjectMapper mapper = new ObjectMapper();
try {
if(value.contains("Teacher"))
{
Teacher teacher= mapper.readValue(value,Teacher.class);
teacherRepository.save(teacher);
}
else if(value.contains("Student"))
{
Student student= mapper.readValue(value,Student.class);
studentRepository.save(student)
}
else if(value.contains("Principal"))
{
Principal principal= mapper.readValue(value,Principal.class);
principalRepository.save(Principal);
}
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}); }
}
Spring Cloud Stream 中的 Kafka Streams 活頁夾不直接提供任何機制來執行您的要求。 您的消費者的類型簽名表示您正在將其作為String
使用,因此活頁夾可以在您不明確提供任何Serde
的情況下推斷出該信息。 但是,如果您想使用 jackson 將String
進一步轉換為其他類型,您需要在業務邏輯中自行完成,因為您已經擁有它。 如果您只有幾個有限類型,我認為這樣做沒有問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.