我正试图在火灾和遗忘模式下使用spring 5 ReactiveCrudRepository来计算如何在(例如mongo)中进行保存。
代码很简单
public Mono<MyObject> saveObject(Mono<MyObject> mono) {
return mono.flatMap(objectRepository::save);
}
事实是我不需要读取返回的值,而在被动的世界中,读取操作会触发保存。
我试过了 。objectService.saveObject(Mono.just(对象))嵌段(); 它工作得很好,但它阻塞了:D
我想知道如何正确地做到这一点。 (或者如果这只是一个坏主意)
感谢Julien
答案 0 :(得分:1)
objectService.saveObject(Mono.just(object)).subscribe();
您需要一个触发操作的操作。
.block()
是一种方法,但这是一个坏主意。一旦你“阻止”你就不再处于被动的世界了。
如果您对方法返回的值不感兴趣 - 您可以使用并清空订阅方法 - 它只会触发操作。
即使我对该值不感兴趣,我也会使用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"));