1

我创建了一个带有 Spring RSocket 支持的简单 RSocket 端点:

@Controller
class SampleController {

    @MessageMapping("sample")
    fun sample(): Flux<ByteArray> {
        return Flux
            .fromIterable(generateSequence(1) { it + 1 }.asIterable())
            .delayElements(Duration.ofSeconds(2))
            .doOnNext { println(it) }
            .map { it.toString().toByteArray() }
    }
}

只要客户端已连接并提取数据,它就可以正常工作:

rsc tcp://localhost:8888 --stream --route sample

一旦我取消此操作,CPU 使用率将达到 20%。如果我rsc并行运行更多客户端,当我取消所有客户端时,CPU 使用率将 > 50%。

我试图寻找一些在服务器端进行清理的样本,但没有找到任何东西。另外,我启用了全局 DEBUG 日志记录级别 ( logging.level.root=DEBUG),但在客户端取消后日志中没有任何内容。我在想也许有某种自动重新连接机制启动并开始发送垃圾邮件请求。

那么,我是否遗漏了什么,有没有这样的行为?

4

0 回答 0