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