Java Vertx3-从JDBC连接返回值?(sql数据库)。

Java Vertx3-从JDBC连接返回值?(sql数据库)。,java,asynchronous,jdbc,vert.x,Java,Asynchronous,Jdbc,Vert.x,我有一个带有返回“config”对象的单个方法的接口 我想在Android和Vertx3环境中使用这个界面 Config retrieveConfig(String authCreds); 我试图在vertx程序中实现这一点,利用它的JDBC客户机,但我遇到了一些问题 jdbcClient.getConnection(sqlConnResult -> //checks for success sqlConnResult.result().query(selectStatement,

我有一个带有返回“config”对象的单个方法的接口

我想在Android和Vertx3环境中使用这个界面

Config retrieveConfig(String authCreds);
我试图在vertx程序中实现这一点,利用它的JDBC客户机,但我遇到了一些问题

jdbcClient.getConnection(sqlConnResult -> 
 //checks for success
 sqlConnResult.result().query(selectStatement, rows -> {
     //get result here, want to return it as answer to interface.
     //seems this is a "void" method in this scope.
});

使用Vertx异步代码也可以使用此接口吗?

异步编程
中,您不能将值返回给调用者,因为这将是一个阻塞调用-异步编程要删除的主要内容之一。这就是为什么在
Vertx
中,许多方法返回
This
void

各种范例作为替代方案存在:

  • Vert.x
    广泛使用了
    Handler
    接口,其中
    Handler(T result)
    方法将与结果一起执行

  • Vert.x 3
    还支持
    Rx Observable
    。这将允许您返回一个
    可观察的
    ,一旦
    异步任务
    完成,它将向
    订户
    发送结果

  • 此外,始终有一个返回
    Future
    的选项,一旦异步任务完成,该选项将包含结果。尽管
    Vert.x
    实际上并不经常使用它

因此,您可能会发现很难为
阻塞
非阻塞api创建这样的
公共接口
Vertx
提供了一种简单易行的方法,但我认为在您的情况下,这不是一个好的解决方案

就我个人而言,我会看一看。有对的支持,并且在
Vertx 3
中得到了很好的采用,几乎每个API调用都有一个

从:

Config retrieveConfig(String authCreds);

Observable retrieveConfig(字符串authCreds);
将使您能够拥有一个通用界面,并使其在
Android
Vert.x
上工作。它还提供了一个额外的好处,即不必陷入
Rx
试图避免的回调地狱


希望这有帮助,

在不改变底层系统的情况下实现RxJava/反应式实现是否可能?你能混合吗?@Zerkz我不太明白。也许你可以用例子更新你的问题,或者开始一个新的问题并在这里发布链接。nm,我想我能够回答它。谢谢你的帮助,威尔!作为一个更新,我能够使用Observable找到一个解决方案,然后将其转换为阻塞Observable(使其同步)。
Observable<Config> retrieveConfig(String authCreds);