首页 > 解决方案 > 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>

标签: spring-bootkotlinwebclientspring-webfluxflux

解决方案


推荐阅读