Не исключение для запросов во время сброса соединения Cassandra - PullRequest
0 голосов
/ 25 апреля 2018

В нашем приложении SpringData Cassandra при подключении к хранилищу данных разрыв соединения происходит как

2018-04-25T10:30:00.677+0000,ERROR,[Control connection] Cannot connect to any host, scheduling retry in 1000 milliseconds
2018-04-25T10:30:01.678+0000,ERROR,[Control connection] Cannot connect to any host, scheduling retry in 2000 milliseconds
2018-04-25T10:30:03.679+0000,ERROR,[Control connection] Cannot connect to any host, scheduling retry in 4000 milliseconds
2018-04-25T10:30:07.679+0000,ERROR,[Control connection] Cannot connect to any host, scheduling retry in 8000 milliseconds

Вопрос 1. Можно ли изменить интервал планирования?

Вопрос 2: При повторной попытке подключения, если запрос выполняется из данных Spring, вместо исключения отправляется пустой ответ, возможно ли создать исключение, если хранилище данных недоступно.

1 Ответ

0 голосов
/ 28 апреля 2018

Для № 1: Вам необходимо добавить ReconnectionPolicy к определению вашего кластера, см. Документацию здесь:

https://docs.datastax.com/en/drivers/java/3.5/com/datastax/driver/core/policies/ReconnectionPolicy.html

В context.xml:

<bean id="reconnectionPolicy"
    class="com.datastax.driver.core.policies.ConstantReconnectionPolicy">
    <constructor-arg name="constantDelayMs"
        value="${cluster.reconnection.delayMillis}" />
</bean>
<cassandra:cluster id="globalCassandraCluster"
                contact-points="${cassandra.contactpoints}"
                port="${cassandra.port}"
                username="${cassandra.username}"
                password="${cassandra.password}"
                compression="LZ4"
                max-queue-size="256"
                reconnection-policy-ref="reconnectionPolicy">
 <cassandra:socket-options read-timeout-millis="${cassandra.socketReadTimeout}"/>

или

Cluster cluster = Cluster.builder()
.addContactPoints("127.0.0.1")
.withPort(9142)
.withCredentials(username, password)
.withReconnectionPolicy(new ConstantReconnectionPolicy(DELAY_IN_MS))
.build();
Session session = cluster.connect();

Для № 2: Не могли бы вы добавить более подробную информацию по этому вопросу? Было бы полезно увидеть ваш код и полученный вами ответ.

...