我试图通过调用来加速我们的代码session.executeAsync()
代替session.execute()
用于数据库写入。
我们有数据库连接可能会关闭的用例,目前是之前的execute()
当连接丢失(集群中没有可访问的主机)时抛出异常。我们可以捕获这些异常并重试或将数据保存在其他地方等等......
With executeAsync()
,看起来没有任何方法可以满足这个用例 - 返回的ResultSetFuture
需要访问对象来检查结果,这将违背使用的目的executeAsync()
首先...
有没有什么方法可以在executeAsync()调用的任何地方添加一个侦听器(或类似的东西),该调用将异步通知一些其他代码数据库写入失败?
这是否相关?
数据统计1.0.2
Java 1.7.40
你可以尝试这样的事情,因为ResultSetFuture
实施ListenableFuture
来自番石榴库:
ResultSetFuture resultSetFuture = session.executeAsync("SELECT * FROM test.t;");
Futures.addCallback(resultSetFuture, new FutureCallback<ResultSet>() {
@Override
public void onSuccess(@Nullable com.datastax.driver.core.ResultSet resultSet) {
// do nothing
}
@Override
public void onFailure(Throwable throwable) {
System.out.printf("Failed with: %s\n", throwable);
}
});
这种方法不会阻止您的应用程序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)