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 回调。