问题标签 [completion-stage]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 如果返回失败的阶段,为什么 thenCombine 结果不能异常完成?
以下代码片段调用thenCombine ,并没有在whenComplete设置异常(它打印No exception
):
但是,下面调用thenCompose的类似代码确实设置了一个异常:
为什么在 BiFunction 实际上返回失败阶段时thenCombine
返回正常完成?CompletionStage
quarkus - 使用 Quarkus/Mutiny 在反应式 REST GET 端点中调度 CompletionStage / CompletableFuture API 服务
在使用回调结构使用 Quarkus / Mutiny 实现 Reactive REST GET 端点并使用阻塞服务检查变体后,我最终使用了 CompletionStage / CompletableFuture API 版本;
如何使用 Quarkus/Mutiny 从我的 Reactive REST GET 端点调用 CompletionStage / CompletableFuture API 服务
spring - 使用非反应性 ServerResponse 下载 Spring 文件
我正在构建一个 Spring Boot 应用程序来根据 url 请求进行文件下载。由于各种原因,我不得不使用旧的 web mvc api(而不是响应式 api)。我还使用了 RouterFunction (org.springframework.web.servlet.function.RouterFunction) 和 ServerResponse (org.springframework.web.servlet.function.ServerResponse) 来路由传入的下载文件请求。我有一个输入流,我需要将其复制到服务器响应的输出(即输入流中的数据应该成为响应的主体)。但是,我不确定我需要编写什么代码来执行此操作。我知道如何将输入流复制到输出流,但是我在哪里可以获取 ServerResponse 中的输出流?我看到了一些关于 CompletionStage 的东西,但我不熟悉它们,而且我 我不确定如何将输入流引入其中(或者即使 CompletionStage 是我需要的)。我正在用 kotlin 写这个,但我相信我可以将 java 答案翻译成等效的 kotlin 代码。
任何建议,将不胜感激。
java - LoadingCache 不适用于 CompletionStage
我需要将 CompletionStage 值加载到 LoadingCache 中,但它不起作用,每次我调用缓存时,该值都不是从缓存中返回,而是从返回要加载到缓存中的值的方法中返回. 这是我的代码,请告诉我如何修复它。
java - Resilience4j 使用 CompletionStage 重试
我正在使用这种方法,希望 executeCall 在引发异常时至少重试 3 次。executeCall(request) 方法返回一个 CompletionStage。
当我尝试对这段代码进行单元测试时,executeCall(request) 方法的调用次数只有一次(我在这个方法中抛出了一个异常)。
如何确保它至少重试 5 次(这是默认值)
java - 如何嵌套 CompleteFuture 超时
我正在尝试做的事情:
背景:延迟很关键。我有 2 个方法返回基本相同的信息,但执行方式不同。平均而言,一个会更快,但有时可能会更慢。第二个平均速度较慢,但更可靠。
所以要求是:
- 我有 2 个 CompletableFutures。我想拿第一个回来的。
- 当第一个未来发生异常时,我想回退到第二个。
- 当第二个未来发生异常时,我想生成异常响应。
- 由于#2 和#3,如果两者都发生异常,我想生成异常响应。
现有代码尝试:
对于以下情况,这完全符合预期:
- 如果
firstFuture
先返回,那就是整体结果。 - 如果
secondFuture
先返回,那就是整体结果。 - 如果
firstFuture
遇到异常 (bydoOptimisticWork
) 然后我们回退到secondFuture
. - 如果
secondFuture
遇到异常,我们直接生成异常响应。 - 如果
firstFuture
超时,那么我们已经返回secondFuture
,所以这实际上与 #2 相同。 - 如果
secondFuture
超时,那么我们已经返回firstFuture
,所以这实际上与 #1 相同。
这不适用于以下情况:
firstFuture
和超时secondFuture
。在这种情况下,
我希望compositeFuture
异常完成(未来触发这个的一些随机机会,因为它们都有相同的超时)。这会触发 teh 中的异常子句completableFuture
,然后等待firstFuture
完成。然后firstFuture
应该遇到一个超时异常,这会触发它回退到它自己的(secondFuture)异常子句,我们会在该子句中生成一个异常响应。
我添加了一堆 println 来检查每个步骤中每个 CompletableFuture 的状态。实际上发生的是compositeFuture
异常完成(如预期),然后我们等待secondFuture
完成。then 似乎忽略了自己的secondFuture
超时,只是无限期地等待其供应商完成。这是一个问题,因为现在整个序列都在等待这个,因为compositeFuture
连接方法被阻塞了。
我对 和 的接近时间持怀疑态度firstFuture
,secondFuture
但无法通过注入不同的超时来重现任何决定性的行为。有趣的是,我可以通过单元测试确保在do<>Work
方法抛出异常时按预期工作,唯一的问题似乎是 CF 配置的超时。
问题:
我们如何将 2 个具有自己超时的 CompleteableFuture 嵌套到一个复合 CompletableFuture 中,并获得遵守超时的整体序列?
java - CompletedStage.completedFuture VS CompletedStage.completedStage
我看到 Java9 CompletedStage.completedStage() 几乎等于 CompletedStage.ompletedFuture()
当我们必须返回时
CompletionStage<Void>
我们可以同时返回。CompletedFuture.completedFuture() 未被弃用,并且在 CompletedStage() 的 Java 文档中写入
那么真正的区别是什么,什么时候必须使用一个而不是另一个?什么时候必须返回 Void 比较好?
或者
java - 如何在带有 http 请求的 lambda 上对 whenCompleteAsync 进行单元测试?
我想为以下类创建一个单元测试:
我已经嘲笑了一切,直到.whenCompleteAsync(consumer)
使用这样的东西:
我目前无法更改课程的设计,只能对其进行测试。
如何模拟消费者对象以使代码在 lambda 内运行?这甚至可能吗?
java - completeExceptionally 和 obtrudeException 之间的区别
只是浏览CompletableFuture
文档并偶然发现了completeExceptionally
和obtrudeException
方法,并且很难理解差异和用例。社区可以通过示例帮助了解差异和用例吗?
java - 如何强制 CompletableFuture.thenApply() 在运行前一阶段的同一线程上运行?
这是我面临的问题的简短代码版本:
这是我得到的输出:
看到那里我很惊讶main
!我预计当我取消注释调用时会发生这样的事情,Thread.sleep()
甚至取消注释sysout
那里的单个语句:
我知道thenApplyAsync()
会确保它不会在main
线程上运行,但我想避免将供应商返回的数据从运行supplyAsync
的线程传递给将要运行的线程thenApply
以及链中的其他后续then
s。