datastax cassandra 驱动程序:如何 return 插入语句的结果集列表中的成功或失败
datastax cassandra driver: how to return success or failure from list of ResultSet for insert statements
我正在使用 datastax object mapper and accessor 将数据插入到我的 cassandra 表中。在链接的文档中,它说 return 类型规范会影响查询的执行方式。我希望查询异步执行,所以我选择使用 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() }
这 return 对我来说 List<ResultSet>
。
但是我想对插入调用return一个Boolean
来表示插入操作成功。我不确定如何使用 returned List<ResultSet>
.
插入查询 return 只有在使用轻量级事务 (LWT) 时才会产生结果。在其他情况下,插入查询不会 return 任何东西,操作的成功就是你得到 ResultSet
而不是异常。因此,在您的情况下,您只需添加始终 return 为真的 onSuccess
回调,以及 return 为假的 onFailure
回调。
我正在使用 datastax object mapper and accessor 将数据插入到我的 cassandra 表中。在链接的文档中,它说 return 类型规范会影响查询的执行方式。我希望查询异步执行,所以我选择使用 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() }
这 return 对我来说 List<ResultSet>
。
但是我想对插入调用return一个Boolean
来表示插入操作成功。我不确定如何使用 returned List<ResultSet>
.
插入查询 return 只有在使用轻量级事务 (LWT) 时才会产生结果。在其他情况下,插入查询不会 return 任何东西,操作的成功就是你得到 ResultSet
而不是异常。因此,在您的情况下,您只需添加始终 return 为真的 onSuccess
回调,以及 return 为假的 onFailure
回调。