当前位置: 首页 > 知识库问答 >
问题:

Spring Boot2。异步API。CompletableFuture vs.Reactive

闻人升
2023-03-14

我的应用程序严重依赖异步Web服务。它是用spring boot 1.5.x构建的,它允许我使用标准的Java8completablefuture 来生成延迟的异步响应。更多信息请参见https://nickebbitt.github.io/blog/2017/03/22/async-web-service-using-completable-future

Spring Boot2.0.x现在附带了可以利用反应范例的入门包。Spring WebFlux是实现反应HTTP的框架。

既然我已经按照第一段中的描述实现了我的API,那么通过重做我的服务来使用非阻塞的反应性方法,我会有很多收获吗?简单地说,我也会有非阻塞的API,对吗?

有没有一个示例如何将基于completablefuture 的异步API转换为mono \flux

我想完全摆脱基于servlet的服务器(在我的例子中是Jetty),使用Netty+Reactor。

不用说,我是一个新的反应范式。

我想听听你的意见。

共有1个答案

谯乐池
2023-03-14

我有两件事要说:

问:有没有一个例子如何将基于CompletableFuture的异步API转换为Mono\Flux?

答:1)您必须以稍微不同的方式配置端点https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html

2)CompletableFuture到Mono\Flux示例:Mono.fromFuture(...)

 类似资料:
  • 本文向大家介绍Springboot2.x 使用 Log4j2 异步打印日志的实现,包括了Springboot2.x 使用 Log4j2 异步打印日志的实现的使用技巧和注意事项,需要的朋友参考一下 介绍 目前常用的 Java 日志框架有 Log4j、Logback、Log4j2 ,性能方面推荐使用异步的 Log4j2,具体对比不多做分析,前人早已完成耕荒,我们就站在巨人的肩膀上来看看如何实操。 SL

  • 我正面临着一个问题,即设计能够执行网络I/O的方法(用于可重用库)。我读过这个问题 API设计中C#5Await/Async模式 以及其他与我的问题更接近的问题。 所以,问题是,如果我想同时提供异步和非异步方法,我必须如何设计这些? 例如,要公开方法的非异步版本,我需要执行如下操作 我觉得这不是个好设计。我想要一个关于如何定义私有方法的建议(例如),这些私有方法可以包装在公共方法中以提供两个版本。

  • 问题内容: 我正在编写一个JavaScript函数,该函数发出HTTP请求并返回对结果的承诺(但该问题同样适用于基于回调的实现)。 如果我立即知道为该函数提供的参数无效,该函数应该同步还是应该返回被拒绝的Promise(或者,如果您愿意,请使用实例调用回调)? 异步功能应 始终 以异步方式运行(特别是对于错误情况)有多重要?是否确定,如果你知道程序是不是一个合适的状态的异步操作继续进行? 例如:

  • 问题内容: 想要为elasticSearch服务编写集成测试: 1.索引 2.搜索 3.检查结果 每个Java api方法都是异步执行的。如何使它成为简单的同步API:call ,等待结果,call ,等待结果… 问题答案: 如@loteq所述,您可以简单地调用a 使其同步。检查elasticsearch集成测试,他们有一些很好的例子。

  • 我有一个用c#编写的AWS lambda函数。此函数负责调用5-6个API调用(Post请求)。 所有这些API调用都是相互独立的。 我不关心这些API调用的响应。 即使我不关心后续响应,每个API调用也需要大约5秒才能完成。 问题:我希望lambda函数在一秒钟内执行并响应。如何异步进行API调用,使lambda函数能够在我的时间限制内完成所有这些操作,而不必等待API调用的响应?理想情况下,我

  • 异步操作在线程中执行,与主应用程序线程分开。当应用程序调用方法异步执行操作时,应用程序可以在异步方法执行其任务时继续执行。 示例 下面通过一个例子来理解这个概念。在示例程序中使用IO库接受用户输入。 是一种同步方法。它将阻止执行函数调用之后的所有指令,直到方法完成执行。 等待输入。它停止执行并且在收到用户输入之前不再执行任何操作。 以上示例将产生以下输出 - 在计算中,当某个事件在继续之前等待事件