我正在使用datastax对象Map器和访问器将数据插入到我的cassandra表中。在链接的文档中,它表示返回类型规范影响查询的执行方式。我希望查询异步执行,所以我选择使用 ResultSetFuture
:
@Accessor
interface MyTableAccessor {
@Query("INSERT INOT MY_TABLE " +
"SET value = :v " +
"WHERE $ID = :id ")
fun insertValue(@Param("v") value: String, @Param("id") id: String): ResultSetFuture
}
我的电话是:
val id = ...
val insertFutures = myList.map {
myTableAccessor.insertValue(it, id)
}
我还为这些未来添加了回调:
insertFutures.forEach {
Futures.addCallback(it, MyCallback(stats, tags))
}
哪里 MyCallback
实现 FutureCallback
接口。我结束通话时说:
return Futures.inCompletionOrder(insertFutures)
.map { it.get() }
这让我想起了一件事 List<ResultSet>
. 但我想退一杯 Boolean
用于插入调用以指示插入操作成功。我不知道我怎么能把它拿回来 List<ResultSet>
.
1条答案
按热度按时间j91ykkif1#
插入查询仅在使用轻量级事务(lwt)时返回结果。在其他情况下,insert查询不会返回任何结果,操作的成功在于
ResultSet
而不是例外。所以在你的例子中,你只需要添加onSuccess
总是返回true的回调,以及onFailure
返回false。