java - 如何捕获异步执行中的 astyanax 失败

标签 java asynchronous cassandra astyanax

我从事的项目使用astyanax驱动程序来访问Cassandra。我想实现一个异步操作:

MutationBatch m;
//…
ListenableFuture<OperationResult<Void>> lf = m.executeAsync();
lf.addListener(myRunnableCallback, myExecutor);

问题:假设在 executeAsync() 调用中没有立即抛出异常,如何区分成功执行和失败执行?

我能想到的唯一方法是,当调用完成回调时,lf.get() 在失败的情况下抛出异常。如果这是正确的方法,astyanax 来源中是否有文档或行确认这一点?

最佳答案

我找到了一个解决方法:而不是 ListenableFutureaddListener服用方法Runnable我可以使用参数Futures.addCallback(ListenableFuture<V>, FutureCallback<V>, Executor)FutureCallback有2个方法:onSuccessonFailure 。这解决了我的问题。

https://code.google.com/p/guava-libraries/wiki/ListenableFutureExplained

关于java - 如何捕获异步执行中的 astyanax 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21710253/

相关文章:

java - 导出的证书包含私有(private)信息/实现自己的信任管理器?

java - 仅在 api 19 中单击按钮时发生 IllegalStateException

java - 当用户输入数据/删除文本时,在 TextField 中显示/消失默认文本

c++ - 异步使用 ReadDirectoryChangesW 时的线程死锁

java - 如何编写 QueryBuilder 查询来清理 Cassandra 中的设置或列表值

java - 使用参数排列进行测试的工具

c# - 没有 async/await 的嵌套 Task<T> 调用

c# - 是否可以通过一个连接在 .Net 中实现异步 Web 服务调用?

java - 按顺序从 Cassandra 检索结果

cassandra - 如何在 Kubernetes 部署文件中启用 Cassandra 密码身份验证