datastax cassandra驱动程序:如何从ResultSet列表中为插入语句返回成功或失败

时间:2018-10-02 21:27:01

标签: cassandra kotlin datastax future objectmapper

我正在使用datastax object mapperaccessor将数据插入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 个答案:

答案 0 :(得分:0)

插入查询仅在使用轻量级事务(LWT)时返回结果。在其他情况下,插入查询不会返回任何内容,并且操作成功的事实是您得到了ResultSet而不是异常。因此,在您的情况下,只需添加始终返回true的onSuccess回调和返回false的onFailure即可。