gpt4 book ai didi

java - 如何使用 spring 5 响应式(Reactive)存储库以“即发即忘”模式进行保存

转载 作者:行者123 更新时间:2023-11-30 06:35:06 24 4
gpt4 key购买 nike

我正在尝试弄清楚如何使用 spring 5 ReactiveCrudRepository 在即发即忘模式下进行保存(例如 mongo)。

代码很简单

public Mono<MyObject> saveObject(Mono<MyObject> mono) {
return mono.flatMap(objectRepository::save);
}

事实是我不需要读取返回的值,并且在响应式(Reactive)世界中,读取操作会触发保存。

我已经尝试过了 objectService.saveObject(Mono.just(object)).block();它工作得很好,但它阻塞了:D

我想知道如何正确地做到这一点。 (或者如果这只是一个坏主意)

谢谢朱利安

最佳答案

objectService.saveObject(Mono.just(object)).subscribe(); 

您需要一个可以触发该操作的操作。 .block()是一种方法,但这是一个坏主意。一旦你“阻止”,你就不再处于 react 世界了。

如果您对该方法返回的值不感兴趣 - 您可以使用空订阅方法 - 它只会触发操作。

即使我对这个值不感兴趣,我也会使用 Mono.subscribe(Consumer<? super Person> consumer, Consumer<? super Throwable> errorConsumer, Runnable completeConsumer)重载只是为了记录操作的结果:

objectService.saveObject(Mono.just(object)).subscribe(null, 
error -> logger.error(error),
() -> logger.info("completed"));

关于java - 如何使用 spring 5 响应式(Reactive)存储库以“即发即忘”模式进行保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45330848/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com