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