Драйвер dasastax cassandra: как вернуть успех или неудачу из списка ResultSet для операторов вставки - PullRequest
0 голосов
/ 03 октября 2018

Я использую преобразователь объекта datastax и accessor для вставки данных в мои таблицы 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 голосов
/ 19 октября 2018

запросы вставки возвращают результат, только если используются облегченные транзакции (LWT).В других случаях запросы вставки ничего не возвращают, и успех операции - это тот факт, что вы получили ResultSet вместо исключения.Так что в вашем случае вы просто добавляете обратный вызов onSuccess, который всегда возвращает true, и onFailure, который возвращает false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...