如何解决JSON 反序列化器与 Spring Boot Starter Web 和 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.5.RELEASE 和 spring-cloud 升级到 2.4.2从 Hoxton.SR9 到 2020.0.1 的版本为我们解决了这个问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。