如何使用spring 5反应存储库保存在fire and forget模式中

时间:2017-07-26 15:05:46

标签: java spring reactive-programming

我正试图在火灾和遗忘模式下使用spring 5 ReactiveCrudRepository来计算如何在(例如mongo)中进行保存。

代码很简单

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

事实是我不需要读取返回的值,而在被动的世界中,读取操作会触发保存。

我试过了         。objectService.saveObject(Mono.just(对象))嵌段(); 它工作得很好,但它阻塞了:D

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

感谢Julien

1 个答案:

答案 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"));