datastax cassandra驱动程序:如何从insert语句的结果集列表返回成功或失败

c9x0cxw0  于 2021-06-15  发布在  Cassandra
关注(0)|答案(1)|浏览(285)

我正在使用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> .

j91ykkif

j91ykkif1#

插入查询仅在使用轻量级事务(lwt)时返回结果。在其他情况下,insert查询不会返回任何结果,操作的成功在于 ResultSet 而不是例外。所以在你的例子中,你只需要添加 onSuccess 总是返回true的回调,以及 onFailure 返回false。

相关问题