Je n'utilise pas ElasticsSearch. J'essaie d'effectuer des opérations de base de données dans cassandra à l'aide de CQL. J'utilise des threads. Tout en exécutant le code, je reçois toujours l'exception dans le fil après un moment: com.datastax.oss.driver .api.core.nonodeAvailableException: aucun nœud n'a été disponible pour exécuter la requête.
J'ai testé avec même un fil. L'erreur est toujours là. Voici mon code:
InetAddress addrOne = InetAddress.getByName("52.15.195.41");
InetSocketAddress addrSocOne = new InetSocketAddress(addrOne,9042);
CqlSession sessionOne = CqlSession.builder().addContactPoint(addrSocOne).withLocalDatacenter("us-east-2").withKeyspace("test").build();
while(counter <= 100)
{
String query = "select max(id) FROM samplequeue";
ResultSet rs = session.execute(query);
for (Row row : rs)
{
int exS = row.getInt("system.max(id)");
}
counter++;
Thread.sleep(50);
}
C'est un exemple très simple et modifié pour démontrer le problème. Je suis incapable de le résoudre. Tous les threads excitant donnent à la même exception. Je suis en cours d'exécution cassandra 3.11.4 sur AWS. Tous mes nœuds sont opérationnels et je peux effectuer des opérations finement dans le backend.
Vous pouvez exécuter le statut de NODETOOL dans cassandra et vous obtiendrez le nom du datacenter. C'est la valeur que vous devez mettre en withLocalDatacenter
méthode:
/opt/Apache-cassandra-3.11.2/bin$ ./nodetool status
Datacenter: **dc1**
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack