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

当使用Spring反应器和Spring靴时,如何返回通量作为响应?

吴升
2023-03-14

我正在尝试将SpringReactor与我的SpringBoot应用程序一起使用。

我正在使用ProjectReactor 3.0.7。松开并安装Spring护套1.5.3。释放

在我的服务类中有一个返回通量的方法。

我想将该值返回到web层中的控制器。但是,我没有看到json响应中返回的值。

当我从浏览器调用http://localhost:8080时,我得到的响应是,{“预取”:-1}

我不确定我是否应该在返回响应之前做一些从Flux到String的转换。

我的代码在,https://github.com/bsridhar123/spring-reactor-demo/blob/master/src/main/java/com/demo/reactor/ReactiveApp.java

你能帮我找到正确的方法吗?

共有1个答案

林曦之
2023-03-14

只有Spring 5(目前处于RC阶段)和Spring Boot 2(目前处于Milestone阶段)才会使用Retor进行完全的无功支持。

您可以独立于Spring使用Retor,但这并不会使框架变得反应性和异步,因此您会失去一些好处。您不能简单地返回Flux,因为框架还不理解这种类型。

但是,如果您必须协调大量服务调用,我相信它在服务层仍然很有用。

在这种情况下,您可以在整个服务层中使用FluxMono,并将它们转换为Spring 4的DeferredResult。比如:

DeferredResult<ResponseEntity<String>> result = new DeferredResult<>();
service.getSomeStringMono()
       .map(n -> ResponseEntity.ok(n))
       .defaultIfEmpty(ResponseEntity.notFound().build()
       .subscribe(re -> result.setResult(re),
                  error -> result.setErrorResult(error));
return result;
 类似资料:
  • 我想用响应替换http异常,也就是说,我使用我想返回的responseentity,例如409如果没有通过名称找到用户,509如果没有通过邮件找到用户,我可以确定responseentity中的错误号及其描述吗?如果有,可以举例说明吗?

  • 问题内容: 我想返回axios的响应,但始终返回的响应是不确定的: 控制台始终记录为未定义。他们以任何方式返回此响应。 问题答案: console.log不会等到该功能完全完成后再进行记录。这意味着您将必须进行异步处理,主要有两种方法: 回调-这是当您将函数作为参数传递到现有函数中时,将在axios调用完成后执行。这是如何与您的代码一起使用的: Promise-实现此目的的最简单方法是将其放在函数

  • 问题内容: 我在Spring Boot中有一个示例RestController: 我正在使用JSON库 当我点击API时,我得到一个异常提示: 路径为[]的Servlet [dispatcherServlet]的Servlet.service()抛出异常[请求处理失败;嵌套异常为java.lang.IllegalArgumentException:未找到类型为org.json.JSONObject

  • 我在Spring Boot中有一个RestController示例: 我正在使用JSON库 当我点击API时,我得到一个异常: 路径为[]的上下文中servlet[dispatcherServlet]的servlet.service()引发异常[请求处理失败;嵌套异常为java.lang.IllegalArgumentException:没有找到具有根本原因的返回值:class org.json.

  • 我正在使用Spring Boot2.1.3开始使用reactive websockets。我创建了一个实现,如下所示: 但是,我想对来自websocket的请求作出反应,告诉我想要的数据的id是什么。我设法获得了这样的请求信息: 现在我不知道如何结合这两个实现? 我希望能做这样的事情: 但这只是立即断开websocket客户机而不做任何事情。

  • 我用的是Spring助焊剂。我需要从不同的来源组装一个物体。如何确保两个流都返回了所需的数据? 比如: