我是Akka(Java lib)的新手,我试图了解Akka是否可以用来向JDBC发出非阻塞请求,如果是这样,它会是什么样子.我相信大多数JDBC驱动程序打开一个套接字连接并阻塞创建它的线程,直到收到一个特定的JDBC响应,因此可能没有太多的Akka可以帮助到这里,但我想知道是否有办法(也许通过期货或代理?)Akka可以帮助提高性能,并允许actor系统继续处理数据,同时正在进行现有的JDBC调用并等待响应.
我发现这篇文章有点模糊/含糊不清,但听起来未来可能是关键所在.然而,该文章并没有真正展示任何有意义的(真实世界)代码示例,因此我仍然处于亏损状态.因此,假设我们有一个存储过程,sp_make_expensive_calculation通常需要10 - 30秒才能返回响应,并且通常通过JDBC调用,如下所示:
String makeExpensiveCalculationSql = "{call sp_make_expensive_calculation(?)}";
callableStatement = dbConnection.prepareCall(makeExpensiveCalculationSql);
callableStatement.setInt(1, 10);
// Could take up to 30 seconds to complete.
callableStatement.executeUpdate();
int answer = callableStatement.getString(2);
Run Code Online (Sandbox Code Playgroud)
Akka可以做任何事情来帮助这些,以便演员系统可以继续处理数据(甚至可以进行其他sp_make_expensive_calculation调用),同时我们等待第一次调用返回吗?
我最近在Scala中实现二进制网络协议.数据包中的许多字段自然地映射到Scala Shorts.我想简要地增加一个Short变量(不是一个值).理想情况下,我想要的东西s += 1(适用于Ints).
scala> var s = 0:Short
s: Short = 0
scala> s += 1
<console>:9: error: type mismatch;
found : Int
required: Short
s += 1
^
scala> s = s + 1
<console>:8: error: type mismatch;
found : Int
required: Short
s = s + 1
^
scala> s = (s + 1).toShort
s: Short = 1
scala> s = (s + 1.toShort)
<console>:8: error: type mismatch;
found : Int …Run Code Online (Sandbox Code Playgroud)