我在Spring Webflow中执行阻塞操作时遇到了一个小问题。我检索文章文档列表,并从文章文档列表中,我想更新另一个对象。
当我执行以下操作时,有时它会工作,有时会抛出“block()/block First()/block Last()被阻塞,这在线程reactor-超文本传输协议-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();
}
请记住,您必须将所有内容置于链接之下。这就是为什么你必须返回单声道
顺便说一句,你正在使用
getArticleDocuments(orderInfo). block();
。看到了吗?你在使用. block()
?不要在链中这样做。永远不要阻止响应链进程中的任何请求。您将从控制器返回mono或通量,一切都将由webflow处理
I使用SpringSpring靴2.1.0。 在其他bean中调用此方法 我需要传递一个字符串值,而不是Mono,当我传递Mono时,答案是空的。 当我试图从Mono获取字符串值时,我得到了一个错误: 如果有人有解决办法,我会很感激
我正在尝试使用Webflux将生成的文件流式传输到另一个位置,但是,如果文件的生成遇到了错误,api将返回成功,但是在生成文件时有一个DTO详细说明了错误,而不是文件本身。这是在使用一个非常旧和设计差的api,所以请原谅使用post和api设计。 api调用(exchange())的响应是ClientResponse。在这里,我可以使用bodyToMono转换为ByteArrayResource,
我正在尝试使用WebTest客户端发布数据,但不幸的是,这样的消息被抛出: 为什么会这样?,我不能阻止值,还是邮政编码有问题?我对这种反应式抽象完全陌生,WebTestClient的这种实现使用了非反应式方法。以下是失败的代码: 这里postAndVerify失败: 创建方法的实现如下所示:
我同意反应性代码不应该阻塞,但是... 在下面的方法findTenantStorageFactory()中,我需要阻止tenantId,这样该方法就可以为租户返回一个特定的工厂。我从Project Reactor中找到了一些说明,说明我需要将方法包装在一个mono.FromCallable()中,并使用boundedElastic()调度程序。但是,当我在调试器中运行此代码时,我会收到可怕的:“b
问题内容: 我正在尝试使用Webflux将生成的文件流式传输到另一个位置,但是,如果文件的生成遇到错误,则api返回成功,但是DTO在生成文件而不是文件本身时会详细说明错误。这使用的是非常古老且设计不佳的api,因此请原谅post和api设计的使用。 api调用(exchange())的响应是ClientResponse。从这里,我可以使用bodyToMono转换为ByteArrayResourc
我在Spring Webflow中的阻塞操作出错了。我检索地址文档的Mono列表,并使用此地址文档的Mono列表来形成街道地址(带有Street),如下所示: 地图方法: 当我执行上述代码时,它抛出一个“block()/blockFirst()/brockLast()are-blocking,这在线程reactor-http-nio-2中不受支持”。你能建议一下如何修理吗。我想在不阻止它的情况下检