Wie wird dem Datastax Java Cassandra-Treiber eine Zeitüberschreitung mitgeteilt, wenn er versucht, eine Verbindung zu Ihrem Cluster herzustellen?Tell Datastax Java Cassandra-Treiber für Timeout-Clusterverbindung
Ich bin besonders an dem Fall interessiert, wenn die Hosts erreichbar sind, aber die Cassandra-Ports blockiert sind oder die Cassandra-Dämonen nicht laufen. Ich schreibe einen Befehlszeilenclient, der eine geeignete Fehlermeldung beenden und melden sollte, wenn er sich nicht in angemessener Zeit verbinden kann. Zur Zeit scheint es, dass der Fahrer ewig auf einen Kontaktpunkt zur Antwort warten wird, wenn der Kontaktpunkt erreichbar ist.
Das heißt, ich möchte Cluster.build()
eine NoHostAvailableException
werfen, wenn der Treiber nicht mit dem Cassandra-Daemon von irgendeinem der Kontaktpunkte innerhalb einer gegebenen maximalen Zeit kommunizieren kann.
- mein eigenes Erstellen
RetryPolicy
wird nicht funktionieren: dass der erneute Abfragen ist, und ich möchte das Timeout anwenden, bevor wir bereit sind, Abfragen auszuführen. - Erstellen von meinem eigenen
ReconnectinoPolicy
zunächst sahen vielversprechend aus, aber der Vertrag für die Schnittstelle gibt keine Mittel zur Anzeige „diesen Knoten betrachten, tot zu sein für immer mehr“
Es ist möglich, dass ich tatsächlich den zweiten Fall sehe. Ich muss diese Socket-Option verpasst haben. Wie Sie meinen, sollte das für die meisten Fälle gut genug sein. – Raedwald
@Raedwald, hast du einen Fehler für dieses Problem eingereicht, oder gab es eine einfachere Lösung? –