JedisSocketFactory.createSocket muss einen verbundenen Socket zurückgeben, der Redis-Verkehr übertragen kann. In Jedis 5.2.0 übergibt die Anwendung diese Factory und ihre Redis-Client-Konfiguration hier:

var jedis = new Jedis(socksSocketFactory, redisConfig);

socksSocketFactory implementiert redis.clients.jedis.JedisSocketFactory, und redisConfig ist die JedisClientConfig der Anwendung. Seien Sie beim Ausführen des Konstruktors verbindebereit: Er kann Authentifizierung und weitere Redis-Einrichtung sofort durchführen.

Einen Socket von der Erzeugung bis zur Übergabe verfolgen

Für eine nicht authentifizierte SOCKS5-Route kann die Factory einen java.net.Socket mit explizitem Proxy.Type.SOCKS-Vermittler erzeugen und dann Verbindung zum Redis-Host und -Port aufnehmen. Lassen Sie das Ziel unaufgelöst wenn der SOCKS-Server den Hostnamen auflösen soll.

Begrenzen Sie den Verbindungsversuch und wenden Sie das vorgesehene Lese-Timeout an. Wenn die Verbindung fehlschlägt, schließen Sie diesen Socket und melden Sie JedisConnectionException; das Factory-Interface deklariert keine geprüfte IOException.

Wenn Redis TLS verlangt, richten Sie TLS ein und prüfen Sie es, bevor der Socket zurückgegeben wird. Ein separates Flag kann nicht voraussetzungslos einen beliebigen von der Factory zurückgegebenen Socket umwandeln. Bei einem Pool wiederholen Sie diesen Lebenszyklus bei jedem Factory-Aufruf mit einem frischen Socket, einschließlich Ersatzverbindungen.

Eine HTTP-Auswahl in einem globalen ProxySelector ist keine alternative Umsetzung dieser Aufgabe. Redis sendet RESP über seinen Socket; dadurch wird er weder HTTP noch handelt er CONNECT aus.

Ähnliche Artikel