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=] 为我们解决了这个问题。