我正在进行一个新的反应项目,其中有很多文件处理IO正在进行。如果我以命令式阻塞的方式编写IO代码,然后将它们包装成一个单声道,在boundedElastic调度器上发布它们,这是否足够?boundedElastic池大小会限制并发操作的数量吗?
如果这不是正确的方法,你能展示一个如何使用Reactor将字节写入文件的例子吗?
如果我以命令式阻塞的方式编写IO代码,然后将它们包装成一个单声道,在boundedElastic调度器上发布它们,这是否足够?
这在某种程度上归结为观点--但不,对于一个反应性的绿地项目来说肯定不理想。boundedelastic()
调度器非常适合在必要时与阻塞IO进行接口,但是当存在真正的非阻塞解决方案时,它们就不是一个很好的替代品。(对于文件处理来说,有时这是一个有争议的问题,因为这取决于底层系统是否可能异步地完成它--但现在通常是可能的。)
在您的示例中,我将研究在反应性发布服务器中包装AsynchronousFileChannel
。为此您需要使用create()
或push()
,然后显式调用sink
,但具体如何执行取决于您的用例。作为文件写入的“最简单情况”,您可以执行如下操作:
static Mono<Void> writeToFile(AsynchronousFileChannel channel, String content) {
return Mono.create(sink -> {
byte[] bytes = content.getBytes();
ByteBuffer buffer = ByteBuffer.allocate(bytes.length);
buffer.put(bytes);
buffer.flip();
channel.write(buffer, 0, null, new CompletionHandler<>() {
@Override
public void completed(Integer result, Object attachment) {
sink.success();
}
@Override
public void failed(Throwable exc, Object attachment) {
sink.error(exc);
}
});
});
}
我看到了以下关于如何定制spring security webflux的帖子:spring webflux自定义API身份验证 如果我们在ServerSecurityContextRepository.Load中抛出异常,那么Spring会将http头更新为500,而我无法操作此异常。 但是,在controller中抛出的任何错误都可以使用常规的@ControllerAdvision来处理,这只是
给出以下方法:
问题内容: 我是新来的反应js。我想用react js异步上传图像假设我有这段代码 任何答案将不胜感激! 问题答案: 你可以利用
我正在我的项目中尝试新的ReactiveQuerydslPredicateExecutor,但我找不到像在QueryDslPredicateExecutor中那样的findAll(谓词,分页)方法 这是故意的吗?这是否意味着对于reactive不建议使用分页?
我正在尝试将Spring Cloud Contract应用于使用Spring WebFlux构建的反应API。基本上能够以以下方式从API发送通量和接收响应通量: 但是,我在网上或文档中找不到关于我是否可以使用Spring Cloud Contract实现这一点的信息。 甚至有可能为此写一份合同吗?它是否能够提供wiremock并生成适当的JUnit测试?