有可能做类似下面代码的事情吗?我有一个服务进行API调用,另一个返回值流。我需要用API调用返回的值修改每个值。
return Flux.zip(
someMono.get(),
someFlux.Get(),
(d, t) -> {
//HERE D IS ALWAYS THE SAME AND T IS EVERY NEW FLUX VALUE
});
我尝试过用。repeat()处理单声道,它可以工作,但是每次有新的流量值时它都会调用方法,而且是API调用,所以不好。
有可能吗?
您可以使用cache
运算符来完成此操作。取消对flux
的注释而不使用cache
,您将看到对getnum
==100
的调用数。使用缓存
时,它将是1
。
public class RepeatableMono {
private static AtomicInteger numberOfCalls = new AtomicInteger(0);
static Integer getNum() {
System.out.println("GetNum Called: " + numberOfCalls.incrementAndGet());
return 0;
}
public static void main(String[] args) {
// This will print `GetNum Called: ` 100 times.
//Flux<Integer> neverEndingFlux = Mono.defer(() -> Mono.just(getNum()))
// .repeat();
// This will print `GetNum Called: ` 1 times.
Flux<Integer> neverEndingFlux = Mono.defer(() -> Mono.just(getNum()))
.cache()
.repeat();
Flux<Integer> stream = Flux.range(1, 100);
Flux.zip(neverEndingFlux, stream, (x, y) -> x + " " + y)
.subscribe(System.out::println);
}
}
我有一个包含两部分的简单程序:一个Spring5服务器,其中一个endpoint返回Mono 当我浏览到http://localhost:8080/rand返回一个双精度值。但是,当我使用客户机时,检索到的值始终为null(响应状态为200)。 我错过了什么?
我想从Flux/Mono中获取对象。我使用 我会这样做: 我有错误: 为什么?有什么不同的方法来获取对象? 在反应式编程中,如何做到:在RequestBody中,您有UserDto。 如果不创建用户,请检查数据库中是否存在电子邮件。
我的代码是这样构造的- 我正在努力实现这一点: 方法1()返回地址时,我需要使用它并调用方法2()来更新MongoDB文档中的地址。也没有抛出异常。但是我没有看到任何日志在方法2() 代码: 虽然调用了method2(),但MongoDB中的文档更新没有发生。
我是反应性编程概念的新手。我正在学习“学习Spring Boot2.0”,所描述的简单概念/示例是可以理解的。但是我不知道如何在更复杂的用例中使用mono/flux。spring boot,mongo和project reactor的一些例子 我的模型
我是整个Spring反应性网络流量的新手。我的问题很简单。在我的addActions()我试图得到一个单声道通过调用getMONtVal()。这工作罚款。但是我需要得到它的值并更新一个属性(submission.state瓦尔)。然后传递调用CustService.addActions(),返回Mono。可以做到这一点而不使用块()?