gpt4 book ai didi

java - 有没有一种检查 Datastax Session.executeAsync() 是否抛出异常的好方法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:35:44 25 4
gpt4 key购买 nike

我正在尝试通过调用 session.executeAsync() 而不是 session.execute() 来加速我们的代码写入数据库。

我们有数据库连接可能断开的用例,目前之前的 execute() 在连接丢失时抛出异常(集群中没有主机可达)。我们可以捕获这些异常并重试或将数据保存在其他地方等......

使用 executeAsync(),似乎没有任何方法可以实现这个用例 - 需要访问返回的 ResultSetFuture 对象来检查结果,这首先会破坏使用 executeAsync() 的目的...

有没有什么方法可以在任何地方为 executeAsync() 调用添加一个监听器(或类似的东西),它将异步通知其他一些代码数据库写入失败?

这是相关的吗?数据税 1.0.2Java 1.7.40

最佳答案

你可以尝试这样的事情,因为 ResultSetFuture 实现了 Guava 库中的 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);
}
});

此方法不会阻止您的应用程序。

关于java - 有没有一种检查 Datastax Session.executeAsync() 是否抛出异常的好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22322510/

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