当前位置: 首页 > 知识库问答 >
问题:

Spring Web Flux Web客户端无法逐个接收值

邓赤岩
2023-03-14
@GetMapping("/test")
fun fluxTest(): Flux<Int> {
        return Flux.create {em ->
            Thread{
                (0..10).forEach{
                    em.next(it)
                    Thread.sleep(1000)
                }
                em.complete()
            }.run()
        }
    }

因此,上面的代码是一个Spring MVC控制器方法,以1秒的间隔发出0~10个数字。

这是我的客户代码。

val client = WebClient.builder().baseUrl("http://localhost:8083/api/v1")
    .build()
val disposable = client.get()
    .uri("/test")
    .retrieve()
    .bodyToFlux(Int::class.java)
    .subscribe ({
        System.out.println("Value arrived : $it")
    }, {err ->
        err.printStackTrace()
    })

问题是,客户端程序一次打印出0~10个,而不是以1秒的间隔逐个打印。

所以,它不会逐个打印来自服务器的值,而是在流完成时打印所有接收到的值。

有人能帮我解决这个问题吗?

谢啦

共有1个答案

全心思
2023-03-14

看起来你应该启用服务器发送事件,简单的方法只需将生产者添加到enpoint如下:

@GetMapping(path = "/test", produces=MediaType.TEXT_EVENT_STREAM_VALUE)
 类似资料:
  • 我在远程机器上设置了Kafka和动物园管理员。在那台机器上,我可以看到下面使用官方网站上的测试方法工作。 但是当我使用本地消费者脚本时,它就不起作用了: 我试着把它改成: 然后运行客户端使用者脚本,它会给出错误: [2017-08-11 15:49:01,591]获取相关id为3的元数据时警告错误:{listings-incoming=leader_not_available}(org.apach

  • 我是一个使用python进行套接字编程的初学者。我正在做我的课程项目。我的项目的一部分需要用不同的端口发送和接收UDP消息。提供了名为robot的服务器程序,我需要编写名为student的客户端程序,它可以与机器人进行交互。因此,我不能显示服务器程序中的所有源代码。 这是服务器程序中与UDP套接字相关的部分 这是我的客户端程序。s3 是 UDP 套接字。我可以成功地向服务器程序发送消息,但无法从中

  • 问题内容: 我要进行最简单的解释。我的Java TCP项目有一个服务器和三个客户端。 服务器具有一个ClientThread。每个客户端都有一个ServerThread和一个UserThread。 工作流程为: 1.客户端(例如,client_0)的UserThread获取用户输入,然后将消息发送到服务器。 2.服务器的ClientThread捕获来自client_0的消息,并将另一条消息发送到另

  • 问题内容: 我要进行最简单的解释。我的Java TCP项目有一个服务器和三个客户端。 服务器具有一个ClientThread。每个客户端都有一个ServerThread和一个UserThread。 工作流程为: 1.客户端(例如,client_0)的UserThread获取用户输入,然后将消息发送到服务器。 2.服务器的ClientThread捕获来自client_0的消息,并将另一条消息发送到另

  • 我正在尝试连接到我的AWS S3存储桶,以便根据这些链接的说明上传文件。 http://docs.aws.amazon.com/AmazonS3/latest/dev/UploadObjSingleOpJava.html http://docs.aws.amazon.com/AWSSdkDocsJava/latest/DeveloperGuide/credentials.html#credenti

  • 我无法获取上一个已知位置。我已经在谷歌控制台中启用了地理编码API和谷歌地点API的Android。我在清单文件中添加了 API 密钥: 但我不断在控制台中收到一条消息:“无法连接到Google API客户端:连接结果{状态代码=API_UNAVAILABLE,分辨率=空}” 更新 我使用谷歌示例 onConnected和onConnectionFailed不调用。 而且我也使用Android反应