我从事的项目使用astyanax驱动程序访问Cassandra。我想实现一个异步操作:
MutationBatch m;
//…
ListenableFuture<OperationResult<Void>> lf = m.executeAsync();
lf.addListener(myRunnableCallback, myExecutor);
问题:假设没有在
executeAsync()
调用中立即抛出异常,如何区分成功执行和失败执行?我能想到的唯一方法是,在调用完成回调时,
lf.get()
会在失败的情况下引发异常。如果这是正确的方法,那么在tytyanax来源中是否有文件或行可以确认这一点? 最佳答案
我找到了一种解决方法:我可以使用ListenableFuture
代替使用addListener
参数的Runnable
的Futures.addCallback(ListenableFuture<V>, FutureCallback<V>, Executor)
方法。 FutureCallback
有2种方法:onSuccess
和onFailure
。那解决了我的问题。
https://code.google.com/p/guava-libraries/wiki/ListenableFutureExplained