spring-boot - WebFlux 新手的烦恼
问题描述
我正在尝试启动基于 Spring WebFlux 的简单应用程序并面临奇怪的麻烦。
我从服务器端返回 Flux,使用 WebClient 在客户端订阅返回的 Flux 并期望获得无限的数字流。
但不是那样我得到错误
org.springframework.core.codec.DecodingException:JSON 解码错误:无法反序列
long
化 START_OBJECT 令牌的实例;嵌套异常是 com.fasterxml.jackson.databind.exc.MismatchedInputException:无法反序列化long
[来源:未知;行:-1,列:-1]
实际上我有一次得到一张地图,而不是长序列
{scanAvailable=true,预取=-1}
有人可以告诉我,我的代码(Kotlin)有什么问题吗?
提前致谢!
休息控制器
@RestController
class Endpoint {
@GetMapping(value = ["/pingpong"], produces = [MediaType.TEXT_EVENT_STREAM_VALUE])
suspend fun pingPong(): Flux<Long> {
return Flux.interval(Duration.ofSeconds(1))
.map {
println("Emit $it")
it
}
}
}
客户
class ClientWrapper() {
private val client = WebClient.create()
fun start() {
client.get()
.uri("http://127.0.0.1:8888/pingpong")
.retrieve()
.bodyToFlux(Long::class.java)
.doOnError {
println(it)
}.subscribe {
println("Answer: $it")
}
}
}
Maven 部门。
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-jdk8</artifactId>
<version>${kotlin.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.projectreactor.netty</groupId>
<artifactId>reactor-netty</artifactId>
<version>0.9.12.RELEASE</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-core</artifactId>
<version>1.4.0-M1</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-reactor</artifactId>
<version>1.4.0-M1</version>
</dependency>
<dependency>
<groupId>io.projectreactor.kotlin</groupId>
<artifactId>reactor-kotlin-extensions</artifactId>
<version>1.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-kotlin</artifactId>
<version>2.11.3</version>
</dependency>
解决方案
推荐阅读
- mysql - 弹性和关系数据库
- windows - 如何在没有电池设备的情况下以编程方式模拟 Windows 工作站中的电池?
- javascript - Angular 5 反应形式验证器错误
- typescript - Angular 6 项目:“task.downloadURL()”不见了?
- java - MockMvc REST 控制器 - 始终返回空主体
- ruby-on-rails - Rails gem 和 bundle 的问题
- mysql - 无法在 Netbeans 8.2 中启动/连接到 MySQL 8.0
- jquery - 使用引导程序和 python 路由导航选项卡
- c# - 使用 FillWeight 后如何获取 datagridview 列的绝对宽度?
- winforms - 如何对齐各个列中的输入数据?