gpt4 book ai didi

java - 配置 Apache Cayenne 以与 Vertx 异步方式使用

转载 作者:行者123 更新时间:2023-12-02 11:32:14 26 4
gpt4 key购买 nike

我正在将 Apache Cayenne 与 Vertx 结合使用。 Vertx 依赖于一切都是异步的,它会主动寻找阻塞的线程。

所以执行类似...

List<Artist> artists = ObjectSelect.query(Artist.class).select(context);

...将导致 Vertx 提示以下内容:

WARNING: Thread Thread[vert.x-eventloop-thread-0,5,main] has been blocked for 4750 ms, time limit is 2000

请注意,实际上有一些方法可以通过将代码包装在 executeBlocking 函数中来解决此问题,如下所示:

// Turning synchronous code to async in Vertx
vertx.executeBlocking<Any>({ future ->
List<Artist> artists = ObjectSelect.query(Artist.class).select(context)
future.complete(artists)
}, { res ->
// The result
})

但是,继续像这样包装我的 ORM 函数变得很痛苦。

我想知道是否有一个标志或开关可以使 Cayenne 异步?或者,如果没有这样的标志,我想知道是否有办法使用 Postgres Async Driver by Mauricio 。我选择特定的异步驱动程序是因为 Vertx provides native support for it .

最佳答案

抱歉,没有神奇的开关可以使 Cayenne 异步。 Cayenne 内部严重依赖 JDBC,而 JDBC 又是同步的(并且可能永远是同步的,请参阅很好的讨论 here )。

此外,对 JDBC 的依赖使得使用非 jdbc 驱动程序变得非常困难,所以这里也没有运气。

因此,适合您环境的自定义包装器似乎是您最好的(如果不是唯一)选择。

关于java - 配置 Apache Cayenne 以与 Vertx 异步方式使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49209635/

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