我创建了一个带有 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
),但在客户端取消后日志中没有任何内容。我在想也许有某种自动重新连接机制启动并开始发送垃圾邮件请求。
那么,我是否遗漏了什么,有没有这样的行为?