Spring Kafka 侦听器使用 JSON 并推断域 object
Spring Kafka listener to consume JSON and infer the domain object
我有一个主题将与多种类型的 JSON 消息一起发布。我无法控制发布者代码来添加任何 headers 等。但是,我想利用 @KafkaHanlder
来处理推断到域 objects 的不同 JSON 消息.我得到了一些参考 https://github.com/spring-projects/spring-kafka/tree/master/samples/sample-02
由于我无法控制发布者代码,因此我想使用自定义解串器处理多种 JSON 类型。编写自定义 de-serializer 以使用 @KafkaHandler
.
处理多个 JSON objects 的任何引用
您不能在没有反序列化的情况下使用 class 级别的侦听器。这是第 22 条军规。
要确定调用哪个方法,我们需要知道类型(反序列化后);如果尚未反序列化,我们无法推断类型。
您可以为多个 JSON 反序列化器编写一个包装器,或者使用 try...until success
,或者通过“查看”JSON 来确定要为该记录调用哪个反序列化器。
if (json.contains "\"foo\":") {
return deserializeWithFooDeser(data, headers);
}
我有一个主题将与多种类型的 JSON 消息一起发布。我无法控制发布者代码来添加任何 headers 等。但是,我想利用 @KafkaHanlder
来处理推断到域 objects 的不同 JSON 消息.我得到了一些参考 https://github.com/spring-projects/spring-kafka/tree/master/samples/sample-02
由于我无法控制发布者代码,因此我想使用自定义解串器处理多种 JSON 类型。编写自定义 de-serializer 以使用 @KafkaHandler
.
您不能在没有反序列化的情况下使用 class 级别的侦听器。这是第 22 条军规。
要确定调用哪个方法,我们需要知道类型(反序列化后);如果尚未反序列化,我们无法推断类型。
您可以为多个 JSON 反序列化器编写一个包装器,或者使用 try...until success
,或者通过“查看”JSON 来确定要为该记录调用哪个反序列化器。
if (json.contains "\"foo\":") {
return deserializeWithFooDeser(data, headers);
}