Кассандра - Установить тайм-аут записи с 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 мс.

Другие вопросы по тегам