簡體   English   中英

Spring Cloud stream 反序列化不同的pojos

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM