立即返回弹簧网通量

2024-04-07

我正在尝试创建应该返回 201 响应的框架。当向 API 发出请求时,我想立即发回响应并在后台处理该请求。

Flux.fromIterable(request.getApiRequests()).log().flatMap(item -> {

        WebClient.RequestHeadersSpec apiCallSpec = WebClient.create(request.getBasePath())
                .method(item.getHttpMethod()).uri(item.getPath()).accept(MediaType.valueOf(item.getAccept()))
                .contentType(MediaType.valueOf(item.getContentType())).body(BodyInserters.fromObject(item.getPayload()));

        return apiCallSpec.retrieve().bodyToMono(String.class);
    }).subscribe();

    return Mono.just("Created");

我希望 Flux 部分在后台发生,但截至目前,一旦整个 Flux 被传输,API 就会等待并响应。


如果我正确理解您想要做什么,我可以建议您使用不同的设计。

不要在上面的(我认为是)控制器中创建 Flux。相反,您可以在应用程序中创建 Hot Stream 的实例(可以是您上下文中的 Bean),然后像这样使用该实例:

myHotStream.next(item);

应用程序中的另一个组件可以使用同一实例来订阅它。

阅读此处的文档:http://projectreactor.io/docs/core/release/reference/#reactor.hotCold http://projectreactor.io/docs/core/release/reference/#reactor.hotCold另一个例子here http://www.baeldung.com/reactor-core, 章节8. 热门直播

Edit

只是一个旁注。通常HTTP 201 已创建意味着实体已成功创建。如果这creation发送响应后异步发生,最好发送一个HTTP 200 正常反而。您不能保证creation已成功,但您可以传达请求已成功接收(例如:通过验证)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

立即返回弹簧网通量 的相关文章

随机推荐

  • 使用 Jquery 的模态 PDF IFRAME

    这是我的脚本 运行完美 没有问题 现在为什么我将其发布在这里 主要是为了我可以增强它并使其变得更好 我也认为这可以帮助其他人 JQUERY 这是一个工作示例http jsfiddle net cornelas 4eUgf 2 http js
  • vim 中递归搜索模式的函数

    我有一个包含简单文本行的文本文件 我想创建一个函数vim and gvim 文本编辑器 can be sent a variable number of patterns and it should find lines will all
  • CDF 累积分布函数误差

    我正在尝试为多列数据文件中的一列绘制 CDF 当数据文件中仅存在一列时 它可以很好地绘制 当我尝试从数据中获取特定列时 它给了我错误 我还尝试使用 for 循环来读取它读起来很好的特定列 如果我在 for 循环之外给出绘图语句 则绘图仅显示
  • C++ 中字符串文字的类型是什么? [复制]

    这个问题在这里已经有答案了 例如 字符串文字 Hello 的类型是什么 const char 6 or const char 字符串文字的类型 Hello 是 6 的数组const char 普通字符串文字和 UTF 8 字符串文字也称为窄
  • 使用 URL 进行简单的 Swift 文件下载

    因此 我将 URL 作为字符串 在本例中为 JPG 但如果可能的话 希望有一个适用于任何文件类型的通用过程 并将文件路径作为字符串 用于保存文件 实现这一点的最快方法是什么 请记住 这是针对 OSX 命令行应用程序的 我尝试了这里找到的一些
  • 如何一键点击链接即可实现“链接另存为”功能? [复制]

    这个问题在这里已经有答案了 因此 正如你们大多数人可能知道的那样 当您在网页上放置文件的链接时 您必须右键单击该链接 然后单击 链接另存为 才能下载该文件 我想知道是否有一种方法可以单击链接并自动下载文件 有一个方法 使用header 调用
  • 在 C# 中追加两个或多个字节数组

    在 C 中是否有最好的 见下文 方法来附加两个字节数组 假装我拥有完全的控制权 我可以使第一个字节数组足够大以在末尾保存第二个字节数组并使用数组 复制到 https msdn microsoft com en us library syst
  • 当返回自定义对象列表时,RxJava 突出显示错误但编译

    我正在进行 RxJava 调用 我订阅的最终结果是预订列表 代码工作正常 但我得到了这个恼人的亮点 演员阵容在这里不起作用 因为我无法演员阵容List
  • 为什么 Linux 重定向会截断文件?

    我有一个名为 test txt 的文件 如下所示 hello world 它只是一个 hello world 字符串 如果我使用 perl 正则表达式 perl pe s hello bye g test txt it says bye w
  • 使用 itextsharp 使用数据库中的图像创建 pdf

    我有一个过程 其中 html 与图像链接存储在数据库中 图像也存储在数据库中 我创建了一个从数据库读取图像的控制器操作 我生成的路径是这样的 File Image path Root test jpg 该图像路径嵌入在 html 的 img
  • 使用自定义配置在调试模式下运行 sbt 项目

    我想使用特殊配置在我的 sbt 0 11 项目中引入调试模式 我尝试使用以下代码来实现这一点 但不幸的是 它似乎没有按预期工作 我正在启动debug run但运行并未按预期暂停 object Test extends Build lazy
  • 如何在 Windows 10 上解锁詹金斯

    我使用下载的 msi 在我的 Windows 10 机器上安装了 jenkins 它安装得很好 现在启动了浏览器 提示我使用初始管理员密码解锁詹金斯 我在任何地方都找不到这个文件 我查看了安装目录 C Program Files x86 J
  • 在 ControllerAdvice 之前捕获反序列化异常

    这是一个问题 我有一个采用输入模型的控制器 可以说 public class AppUserUpdateData NotNull Size min 1 max 50 protected String login JsonDeserializ
  • 处理 String.getBytes("UTF-8") 中的 UnsupportedEncodingException 的推荐方法

    建议的处理方式是什么不支持的编码异常 http docs oracle com javase 6 docs api java io UnsupportedEncodingException html在库方法中调用 String getByt
  • 如何更改 Paginator 的页面名称?

    Current Paginator正在使用 page N 但我想用别的东西 我怎样才能改变成这样 sida N反而 我看过Illuminate Pagination Environment并且有一个方法 setPageName 在那里改变它
  • 从浏览器调用 Android 应用程序

    我一直在尝试从浏览器调用我的应用程序安卓 3 1 蜂窝 这些是我尝试过的链接 但没有一个有效 a href click me 1 a a href click me 2 a a href click me 3 a 对于第一个和第二
  • 鼠标悬停/悬停效果在 IE8 上缓慢

    我注意到在 IE8 中 当在包含许多行 本例中为 100 行 的表上使用鼠标悬停事件时 性能会出现奇怪的情况 我尝试了很多不同的方法 但我似乎找不到任何方法来按照我喜欢 需要的速度获得它 如果我在每个事件上切换类 则所有 IE 版本的性能都
  • 为什么 JavaScript 在普通浏览器中没有自己的线程?

    JavaScript 不是多线程还不够 显然 JavaScript 甚至没有自己的线程 而是与大量其他东西共享一个线程 即使在大多数现代浏览器中 JavaScript 通常也与绘画 更新样式和处理用户操作处于同一队列中 这是为什么 根据我的
  • 使用 Joda Time 进行 Grails 控制器单元测试

    当我有一个带有 Joda LocalDateTime 字段的域对象时 一些生成所有创建的控制器测试失败 grails create app bugdemo cd bugdemo grails create domain class Item
  • 立即返回弹簧网通量

    我正在尝试创建应该返回 201 响应的框架 当向 API 发出请求时 我想立即发回响应并在后台处理该请求 Flux fromIterable request getApiRequests log flatMap item gt WebCli