JSON 反序列化器与 Spring Boot Starter Web 和 Spring Cloud Stream 冲突
JSON deserializer conflict with Spring Boot Starter Web and Spring Cloud Stream
我有一个相当简单的 Java 应用程序,它侦听 Kafka 主题以获取 JSON 消息。
这些是主要的依赖项和版本:
id 'org.springframework.boot' version '2.3.5.RELEASE'
...
set('springCloudVersion', "Hoxton.SR9")
...
implementation 'org.springframework.cloud:spring-cloud-stream'
implementation 'org.springframework.cloud:spring-cloud-stream-binder-kafka'
指定JSON格式的application.properties
配置:
spring.cloud.stream.bindings.listener-in-0.content-type = application/json
以及“核心循环”:
@Bean
public Consumer<Message<MyDataModel>> listener() {
return message -> {
...
它就像一个魅力。但现在我正在尝试使用 Actuator 库向应用程序添加一个 /metrics
端点:
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
将这些添加到 build.gradle
后,代码本身没有任何更改,上面片段中的消费者无法反序列化传入消息,模型对象是 null.
显然,spring-boot-starter-web
包覆盖了 spring-cloud-stream
库附带的 JSON 处理机制,但我不知道该怎么做。尝试排除 web-starter 库的部分内容并围绕 springBoot 版本进行更改,但尚未成功。
正在将 springboot 版本从 2.3.[=24= 升级到 2.4.2 ],spring-cloud 版本从 Hoxton.SR92020.0.1 =19=] 为我们解决了这个问题。
我有一个相当简单的 Java 应用程序,它侦听 Kafka 主题以获取 JSON 消息。
这些是主要的依赖项和版本:
id 'org.springframework.boot' version '2.3.5.RELEASE'
...
set('springCloudVersion', "Hoxton.SR9")
...
implementation 'org.springframework.cloud:spring-cloud-stream'
implementation 'org.springframework.cloud:spring-cloud-stream-binder-kafka'
指定JSON格式的application.properties
配置:
spring.cloud.stream.bindings.listener-in-0.content-type = application/json
以及“核心循环”:
@Bean
public Consumer<Message<MyDataModel>> listener() {
return message -> {
...
它就像一个魅力。但现在我正在尝试使用 Actuator 库向应用程序添加一个 /metrics
端点:
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
将这些添加到 build.gradle
后,代码本身没有任何更改,上面片段中的消费者无法反序列化传入消息,模型对象是 null.
显然,spring-boot-starter-web
包覆盖了 spring-cloud-stream
库附带的 JSON 处理机制,但我不知道该怎么做。尝试排除 web-starter 库的部分内容并围绕 springBoot 版本进行更改,但尚未成功。
正在将 springboot 版本从 2.3.[=24= 升级到 2.4.2 ],spring-cloud 版本从 Hoxton.SR92020.0.1 =19=] 为我们解决了这个问题。