Кассандра - Установить тайм-аут записи с Java API
Я пытаюсь установить тайм-аут записи в Кассандре с помощью диска Java. SocketOptions позволяет мне установить тайм-аут чтения и соединения, но не тайм-аут записи. Кто-нибудь знает способ сделать это без изменения cassandra.yaml?
Спасибо
Altober
1 ответ
Имя вводит в заблуждение, но SocketOptions.getReadTimeoutMillis() применяется ко всем запросам от драйвера к cassandra. Вы можете думать об этом как о тайм-ауте на уровне клиента. Если ответ не был возвращен узлом кассандры в этот период времени OperationTimeoutException
будет поднят и будет пробовать другой узел. Обратитесь к ссылке javadoc выше для более подробной информации о том, когда исключение выдано клиенту. Как правило, вы хотите, чтобы этот тайм-аут был больше, чем ваш тайм-аут в cassandra.yaml, поэтому 12 секунд по умолчанию.
Если вы хотите эффективно управлять таймаутами на уровне клиента, вы можете контролировать это для каждого запроса с помощью executeAsync
наряду с приуроченным get
на ResultSetFuture
отказаться от запроса по истечении определенного периода времени, то есть:
ResultSet result = session.executeAsync("your query").get(300, TimeUnit.MILLISECONDS);
Это бросит TimeoutException
если запрос не был выполнен в течение 300 мс.