我已經開始使用項目反應器了,並且希望將我們的API之一移動到被動的處理方式。我想知道什麼是處理像ListenableFuture的東西。在項目反應器中處理ListenableFuture
在我的情況下,我使用Cassandra,當我調用session.executeAsync()時,這將返回一個ResultSetFuture,它擴展了ListenableFuture。 下面是我現在編碼的例子,我似乎並不滿意將ListenableFuture公開給客戶端。
public Mono<ListenableFuture<Void> save(Publisher<AccountDTO> accountPublisher) {
return Mono.just(accountPublisher)
.map(accountDTO -> {
Account accountEntity = modelMapper.map(accountDTO, Account.class);
return mappingManager.mapper(Account.class).saveAsync(accountEntity);
})
.retry(1)
.doOnError(throwable -> log.error("Unable to create account "))
.mapError(throwable -> new MyCustomException("")
}
我的問題是,它是一個很好的做法,暴露ListenableFuture,我個人並不想給這樣的返回給客戶端,他們可以阻止任何東西。有沒有更好的方法來處理這個項目反應器,我可以只返回一個單聲道?
感謝@Simon指導我在此。這有幫助。 – Coder