繁体   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