簡體   English   中英

使用來自同一 kafka 主題的字符串和 JSON 消息 - 反序列化問題

[英]Consume String and JSON message from same kafka topic - issue with deserialization

字符串消費者正在使用 JSON 消息。 我的產品發送兩種類型的消息字符串和序列化 JSON

@KafkaListener(topics = "${kafka.topic}", groupId = "${kafka.group-id}", containerFactory = "${kafka.string-listener-container-factory}")
public void consume(@NotNull ConsumerRecord<String, String> cr, @Payload String payload) {
    log.debug("Received asset id: {}, with key: {}, Partition: {}, Offset: {}  ", payload, cr.key(), cr.partition(),
            cr.offset());

}


@KafkaListener(topics = "${kafka.topic}", groupId = "${kafka.group-id}", containerFactory = "${kafka.json-listener-container-factory}")
public void consumeAssetEvent(@NotNull ConsumerRecord<String, Event> cr, @Payload Event payload) {
    log.debug("Received asset id: {}, with key: {}, Partition: {}, Offset: {}  ", payload, cr.key(), cr.partition(),
            cr.offset());

}

消費者方我有兩個消費者 1. 監聽字符串消息 2. 監聽 json 並反序列化為對象

甚至 json 消息也被 String 偵聽器使用。

消費者中沒有過濾器功能可以根據您設置的 Serde(例如 string 、 json 等)區分消息。 當生產者發送消息時,它會在 kafka 主題中轉換為 byte[]。 然后這個 byte[] 被消費者反序列化設置反序列化。

所以沒有默認的方式來過濾字符串消息到字符串消費者和 json 到 json 消費者。 創建接收所有數據的偵聽器並檢查它是否為 json 或更改字符串和 json 的主題(將字符串發送到一個主題,將 json 發送到另一個主題並相應地使用)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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