如何在异步执行中捕获astyanax失败

时间:2014-02-11 18:36:01

标签: java asynchronous cassandra astyanax

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

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

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

我能想到的唯一方法是,当调用完成回调时,lf.get()会在出现故障时抛出异常。如果这是正确的方式,那么astyanax来源中是否有一个或多个文件证实了这一点?

1 个答案:

答案 0 :(得分:1)

我找到了一种解决方法:我可以使用ListenableFuture代替addListener Runnable方法Futures.addCallback(ListenableFuture<V>, FutureCallback<V>, Executor)参数FutureCallbackonSuccess有两种方法:onFailure和{{1}}。这解决了我的问题。

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