gpt4 book ai didi

java - Vertx3 - 从 JDBC 连接返回一个值? (SQL 数据库)。

转载 作者:行者123 更新时间:2023-11-30 08:49:23 24 4
gpt4 key购买 nike

我有一个接口(interface),只有一个方法返回“config”对象。

我想在 Android 和 Vertx3 环境中使用此接口(interface)。

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.
});

这个接口(interface)甚至可以用 Vertx 异步代码实现吗?

最佳答案

Async programming你不能真正将你的值返回给调用者,因为这将是一个阻塞调用——主要的事情之一async programming试图删除。这就是为什么在 Vertx很多方法返回 thisvoid .

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

  • Vert.x广泛使用Handler<T> handler(T result)所在的界面方法将与结果一起执行。

  • Vert.x 3还支持 Rx Observable .这将允许您返回 Observable<T>这会将结果发送到 subscribers一旦async task已经完成。

  • 此外,总有一个选项可以返回 Future<T>其中,一旦异步任务完成将包含结果。虽然Vert.x并没有真正使用它。

所以您可能会发现很难获得 common interface像这样 blockingnon-blocking api . Vertxrun blocking code 提供了简单易行的方法但我认为这不是您的情况的好解决方案。

就我个人而言,我会看看 RxJava .支持 Rx on Android ,并已在 Vertx 3 中得到很好的采用- 几乎每个 API 调用都有一个 Rx equivalent .

移动自:

Config retrieveConfig(String authCreds);

Observable<Config> retrieveConfig(String authCreds);

将使您能够拥有一个通用界面并使其在Android 上工作& Vert.x .它还会带来额外的好处,即不必误入回调 hell Rx试图避免。

希望对您有所帮助,

关于java - Vertx3 - 从 JDBC 连接返回一个值? (SQL 数据库)。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31465131/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com