Spring Webflux 抛出“block()/blockFirst()/blockLast() 正在阻塞,线程reactor-http-nio-2 不支持”

2024-04-28

我在 Spring Webflux 中执行阻塞操作时遇到一个小问题。我检索文章文档列表,并从文章文档列表中,我想更新另一个对象。

当我执行下面的代码时,有时它会起作用,有时会抛出“block()/blockFirst()/blockLast() 正在阻塞,这在线程reactor-http-nio-2 中不受支持”。您能否建议如何修复。我真的不想让它阻塞,但不知道如何继续。 stackoverflow 中有类似的线程,但不符合我的要求。

如果有人能建议一种解决方法,那就太好了?

private OrderInfo setPrices(final OrderInfo orderInfo) {
    final List<ArticleDocument> articleDocuments = getArticleDocuments(orderInfo).block(); // Problematic line
    for (ArticleDocument article : articleDocuments) {
         //Update orderInfo based on one of the article price and few more condition.
  }
 return orderInfo;
}

private Mono<List<ArticleDocument>> getArticleDocuments(final OrderInfo orderInfo) {
    return this.articleRepository.findByArticleName(orderInfo.getArticleName()).collectList();
}

它一定是这样的。请注意,我尚未在我的 IDE 上对其进行测试。要修改任何内容请评论并一起解决。

private Mono<OrderInfo> setPrices(final OrderInfo orderInfo) {
    getArticleDocuments(orderInfo)
        .map(articleDocuments -> {
            articleDocuments.forEach(article -> // UPDATE AS YOU NEED);
            return orderInfo;
        });

private Mono<List<ArticleDocument>> getArticleDocuments(final OrderInfo orderInfo) {
    return this.articleRepository.findByArticleName(orderInfo.getArticleName()).collectList();
}

请记住,您必须将所有内容都放在链接下。这就是为什么你必须回来Mono<OrderInfo>代替OrderInfo from setPrices方法。如果您发现我建议的代码很难适应您当前的编码结构,您可以向我展示完整的代码。让我们看看我们能否建立一个好的链条。

顺便说一句,你正在使用getArticleDocuments(orderInfo).block();。看?你正在使用.block()?不要在连锁店里这样做。永远不要阻止响应链进程的请求中的任何内容。您将从控制器返回单声道或通量,一切都将由 webflux 处理

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

Spring Webflux 抛出“block()/blockFirst()/blockLast() 正在阻塞,线程reactor-http-nio-2 不支持” 的相关文章

随机推荐

  • 如何在 Chrome/Safari 中调试 EJS 代码

    我正在将 EJS 模板与 CanJS 一起使用 并正在寻找一种调试我的 EJS 代码的方法 目前 firebug 可以向我显示 EJS 中的语法错误 但在其他浏览器中 我看不到任何内容 我需要非常仔细地检查我的 EJS 文件来解决错误 我在
  • C#“as”与“()”转换[重复]

    这个问题在这里已经有答案了 为什么在这种情况下兼容引用类型之间的转换会编译 Excel 2010 Net 4 5 using Excel Microsoft Office Interop Excel Excel Application ex
  • 无约束类型参数错误

    我正在尝试将 glium 与 cgmath 连接起来 下列的这个答案 https stackoverflow com a 40028032 5397009 我已经实现了ToArray要转换实例的特征cgmath Matrix4转换成 gli
  • 如何隐藏我的应用程序但不关闭/完成它

    我想让用户通过隐藏它但不完成它来离开我的应用程序 我可以在主要活动中调用 finish 但这需要一些时间 这不利于用户体验 因此更好的选择可能是隐藏它 只是我不知道如何实现它 感谢您的所有回答 我不想在后台做某事 因为我已经有服务了 在我的
  • Tkinter 和 Tix 的颜色图表

    我想要可视化一些基本颜色 这样我就可以为我的配色方案选择合适的颜色 我在任何地方都找不到颜色图表 因此修改了示例来显示它 这是一个好方法吗 import Tix as tk import tkinter tix as tk for Pyth
  • 如何将任务并行库与 DataReader 结合使用

    我经常用数据填充数据读取器并像这样填充 UI using SqlConnection conn new SqlConnection myConnString using SqlCommand comm new SqlCommand Sele
  • 更改 Android 的 CalendarView 小部件中选定日期的颜色

    如何更改 android 提供的 CalendarView 小部件中所选日期的颜色 我似乎在文档中没有找到任何方法 I can change the VerticalBars using setSelectedDateVerticalBar
  • Java:如何将哈希图插入 MongoDB?

    我有一个哈希图 我试图将其插入到 MongoDB 版本 3 6 中 我知道 insertMany 方法 它只接受文档列表 我无法创建列表 因为我的数据中有重复项 我想删除它们 这就是我创建哈希图的原因 有什么办法可以将 hashmap 插入
  • 使用 gnu make 正确构建 git 子模块

    我目前尝试编写一个 Makefile 来正确构建一个包含 git 子模块的项目 该子模块有自己的一组 makefile 并一次生成多个目标 包括一些库 该 Makefile 应具有以下属性 即使使用并行构建 也不要重建两次子模块 当子模块代
  • Linq:Entity Framework Core 中的 Join 与 Include/ThenInlude

    我正在开发一个使用 SQL Server 和 EF Core v3 的项目 我有 4 个彼此相关的表 这是我的表格方案 我针对这些表编写了 2 个 Linq 查询 其中一个使用像这样的连接 var result from emailTemp
  • 我的 self.view 尺寸错误

    我的视图尺寸错误 我仅运行横向 但视图报告纵向尺寸 视图宽度 768 000000 高度 1024 000000 有任何想法如何解决这个问题吗 我尝试过使用自动旋转 BOOL shouldAutorotateToInterfaceOrien
  • Outlook 代码中的 Excel FilePicker 对话框在后台打开

    我开发了一个 Outlook 宏 让用户选择并打开 Excel 文件 文件对话框在后台打开 对于用户来说 Outlook 应用程序似乎被卡住了 而它只是在等待用户在所有其他窗口后面的文件选择器对话框中选择文件 Dim SigFolder2
  • 无论如何,HTML 表格都不适合整个屏幕

    基本上 我的网站上有一个表格无法 100 适应浏览器屏幕的宽度 即使我将宽度更改为 110 它也只是与右侧重叠 但左侧仍然有一个边距空间 表格的外部空间 我希望表格从左到右完全压在浏览器屏幕上 根本没有空间或边框 我该怎么做呢 我已经尝试了
  • 响应式 CSS 背景图片

    我有一个网站 g floors eu 我想让背景 在CSS中我为内容定义了一个背景图像 也具有响应能力 不幸的是 除了我能想到的一件事之外 我真的不知道如何做到这一点 但这是一个解决方法 创建多个图像 然后使用 css 屏幕大小来更改图像
  • 应用程序域和线程

    引用MSDN的一段话 http msdn microsoft com en us library 6kac2kdh aspx http msdn microsoft com en us library 6kac2kdh aspx 一个或多个
  • 如何确定类型参数的方差?

    灵感来自Scala 中协变和逆变的现实示例 https stackoverflow com questions 5277526 real world examples of co and contravariance in scala我认为
  • JsonDocument 获取 JSON 字符串

    我需要一个从 JsonDocument 获取 JSON 字符串的示例 我可以通过以下方式获取属性RootElement GetProperty ItemName 然后打电话 GetString 但找不到一种方法来获取 JSON 字符串形式的
  • 如何控制台登录 couchdb

    首先 我真的很喜欢使用 CouchDB 可以做的所有事情 我来自很多前端 JavaScript 我使用 console log 来执行大量调试和测试任务 我想知道如何 console log 或者 CouchDB 中可能有什么更好的调试方法
  • 为 Blazor UI 应用程序实施防伪验证

    我们的应用程序是使用 Blazor Server 和与 Azure API 通信的 razor 页面构建的 我想知道对于 Blazor UI 我们是否应该实现防伪造 CSRF XSRF 如果可以 我可以获得一些如何实现的信息吗 我观察到为
  • Spring Webflux 抛出“block()/blockFirst()/blockLast() 正在阻塞,线程reactor-http-nio-2 不支持”

    我在 Spring Webflux 中执行阻塞操作时遇到一个小问题 我检索文章文档列表 并从文章文档列表中 我想更新另一个对象 当我执行下面的代码时 有时它会起作用 有时会抛出 block blockFirst blockLast 正在阻塞