从CompletionStage返回Single的正确方法

问题描述

我正在使用RxJava2,Micronaut和Cassandra处理反应流。我是rxjava的新手,不确定以最佳异步方式返回List Person的正确方法是什么?

数据来自Cassandra Dao界面

public interface PersonDAO {    
    @Query("SELECT * FROM cass_drop.person;")
    CompletionStage<MappedAsyncPagingIterable<Person>> getAll(); 
}

被注入到micronaut控制器中

   return Single.just(personDAO.getAll().toCompletableFuture().get().currentPage())
            .subscribeOn(Schedulers.io())
            .map(people -> HttpResponse.ok(people));

OR

return Single.just(HttpResponse.ok())
        .subscribeOn(Schedulers.io())
        .map(it -> it.body(personDAO.getAll().toCompletableFuture().get().currentPage()));

或切换到RxJava3

    return Single.fromCompletionStage(personDAO.getAll())
            .map(page -> HttpResponse.ok(page.currentPage()))
            .onErrorReturn(throwable -> HttpResponse.ok(Collections.emptyList()));

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)