【发布时间】:2017-07-29 12:35:50
【问题描述】:
我已经开始使用项目反应器,并希望将我们的一个 API 移动到反应式做事方式。我想知道如何处理诸如 ListenableFuture 之类的事情。
就我而言,我使用的是 Cassandra,当我调用 session.executeAsync() 时,它会返回一个扩展 ListenableFuture 的 ResultSetFuture。
下面是我现在编写的代码示例,我似乎对向客户公开 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 是不是一个好习惯,我个人不想把这样的东西还给他们可以阻止的客户端。有没有更好的方法在我可以返回 Mono 的项目反应器中处理这个问题?
【问题讨论】:
标签: project-reactor