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

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


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

我能想到的唯一方法是,在调用完成回调时,lf.get()会在失败的情况下引发异常。如果这是正确的方法,那么在tytyanax来源中是否有文件或行可以确认这一点?

最佳答案

我找到了一种解决方法:我可以使用ListenableFuture代替使用addListener参数的RunnableFutures.addCallback(ListenableFuture<V>, FutureCallback<V>, Executor)方法。 FutureCallback有2种方法:onSuccessonFailure。那解决了我的问题。

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

10-04 10:01