我现在正在使用springboot和springwebflux2.4.3(包括reactor netty1.0.4)。我一直在测试webflux来重写我的控制器代码。所以我编写了一个简单的测试代码来等待并检查资源。
几次尝试之后,我意识到 skipUntil
, filter
以及 handle
运算符使可观察对象等待第一个元素发射。下面不是原始的测试代码。这只是测试代码 skipUntil
.
如果我移除 skipUntil
操作人员从下面的代码和停止 curl 使用 Ctrl-C
,它显示 Canceled
立即和适当地。否则,它只是等待100秒后取消。这是webflux中的预期行为吗?
@RestController
@Log4j2
@RequiredArgsConstructor
public class AudioDumpFileAccessController {
@GetMapping(value = "/dumps")
public Flux<String> getDumpFiles() {
return Flux.interval(Duration.ofSeconds(1)) // Simulates waiting something periodically.
.doOnNext(System.out::println)
.map(aLong -> {
// Get a resource and return it
return aLong;
})
.skipUntil(aLong -> aLong > 100) // Simulates available resource.
.take(1)
.doOnCancel(() -> System.out.println("Cancelled"))
.doOnComplete(() -> System.out.println("Completed"))
.map(aLong -> String.format("Text %d", aLong));
}
}
$ curl localhost:6631/dumps
如何使用springwebflux实现这些功能?
等待某些资源可用。
当客户机断开连接时,必须立即取消可观察的。
我看到并测试了解决方法。但我认为这个答案似乎是针对苏格兰和南方能源公司的。
暂无答案!
目前还没有任何答案,快来回答吧!