我有一个包含240个项目的列表,使用for
完整发送此列表需要1个多小时。
List<Map<String, Object>> conventions = mapConventions(objects, referentialService);
for(Map<String, Object> item : conventions) {
webClient.post()
.uri(configProperties.getUrl().getConvention() + CONVENTION)
.bodyValue(objectMapper.convertValue(item, JsonNode.class))
.retrieve()
.bodyToMono(String.class);
}
所以我跟着这篇文章同时发送,以尽量减少响应时间,但是平板地图
里面的代码永远不会执行:
Flux.fromIterable(conventions).flatMap(item -> {
System.out.print(item);
return webClient.post()
.uri(configProperties.getUrl().getConvention() + CONVENTION)
.bodyValue(objectMapper.convertValue(item, JsonNode.class))
.retrieve()
.bodyToMono(String.class);
});
在反应式编程中,有生产者和订阅者。虽然制作人可以输出结果,但如果没有人在听这些结果,那就没有任何好处——订阅者就是在听这些结果。订阅者处理生产者的输出,并对结果进行有意义的处理。对于反应式编程来说,如果订阅者没有“监听”结果,那么生产者就不会执行任何代码。
所以在这种情况下,flatmap()
是生产者。并且它不会执行任何代码,除非有订阅服务器来处理输出。
简单的回答是在flatmap的末尾添加一个subscribe()
调用。看起来像这样。
Flux.fromIterable(conventions).flatMap(item -> {
System.out.print(item);
return webClient.post()
.uri(configProperties.getUrl().getConvention() + CONVENTION)
.bodyValue(objectMapper.convertValue(item, JsonNode.class))
.retrieve()
.bodyToMono(String.class);
}).subscribe();
很多教程都是关于这一点编写的。例如:https://spring.io/blog/2016/06/13/notes-on-reactive-programming-part-ii-writing-some-code https://medium.com/@olehdokuka/mastering-own-reactive-streams-implementation-part-1-publisher-e8eaf928a78chttps://projectreactor.io/docs/core/release/reference/
假设我有这样的代码: 输出是相同的线程名称,所以这里没有的好处--我的意思是有一个线程来完成所有的工作。 在内部有以下代码: 我理解强制属性如果“outer”流将是并行的(它们可能会阻塞),“outer”将不得不等待“flatmap”完成,反过来(因为使用了相同的公共池),但为什么总是强制这样做呢? 这是一个可以在以后的版本中改变的东西吗?
前端将这个json发送到我的API 控制器:
我对webflux比较陌生,我想找到解决方案,在有条件时避免嵌套flatMap: 如何防止这种分支条件平面映射混乱?我无法想象如果我在项目中有另一个实体。会有更多嵌套的平面地图?
我很难找到一个优雅的解决方案来链接一些期货。我试图实现的方法看起来像这样(它是缓存的一部分): 算法大致如下: 如果密钥被锁定,则立即通过运行时异常(使用 Future.failed 是否会提前? 否则打开 块,因为它需要一些时间来检索密钥 要么返回一个直,然后返回未来和方法的结果 或者它需要运行 最后一步意味着我需要从未来内部对未来进行“扁平化”。也就是说,我不能做一个,所以我想策略是使用。 现
我有一个Spring Boot应用程序,其中包括Spring Actuator在 我的配置是这样的 但是,当我尝试使用检查endpoint时,我的浏览器显示 在我的IntelliJ想法中,我可以看到执行器选项卡,它似乎在那里工作,但没有URL映射。有人能帮忙吗?
我在Tomcat 8上使用Spring 4 WebSocket,我有以下配置: 我的Spring控制器具有以下方法: 所以我在这里尝试做的是,如果客户端1想要向客户端2发送消息,他将使用。然后,Spring控制器将消息推送到主题。 我在客户端中编写了以下代码: 连接工作正常,只是我的应用程序的上下文根。 我的客户端中还有以下代码用于发送消息: 两个变量(和)都是可访问的,我没有从这部分代码中得到任