我在项目中使用Java框架。我们有很多并发用户,因此我们决定使用play重写整个项目,以便从非阻塞功能中受益,以支持更多的并发用户。项目背后的数据库是Oracle,如您所知,除了ReactivMongo之外,所有JDBC驱动程序都使用阻塞IO。 我已经搜索了很多,并得出结论,目前还没有解决方法使Oracle JDBC驱动程序无阻塞。但是,Oracle在其本机OCI驱动程序中支持非阻塞调用(不幸的是它基于轮询而不是回调或中断)甚至没有实验项目!这证明还没有感觉到需要,它必须有一个理由。当然,我发现以下链接对于Java来说是my-sql asynchronous connector,但对于Oracle来说却没有。
这让我想到了我的问题。当我有一个用于Oracle的阻塞JDBC驱动程序时,使用Play框架真的很有用吗?
答案 0 :(得分:0)
使用后台线程进行JDBC连接,并通过消息与此线程通信。
老实说, nobody 在非阻塞模式下使用OCI。它有各种未记录的限制。并且一些OCI调用无法预测地将库切换回阻塞模式。另一方面,OCI在多线程环境中使用是非常安全的。