Ce trebuie să returneze o fabrică de socketuri SOCKS pentru Jedis
Jedis 5.2.0 așteaptă un socket conectat și pregătit pentru Redis, inclusiv TLS când este necesar; doar alegerea unui proxy nu oferă acea conexiune.
JedisSocketFactory.createSocket trebuie să returneze un socket conectat, pregătit să transporte trafic Redis. În Jedis 5.2.0 aplicația furnizează acea fabrică și configurația sa de client Redis aici:
var jedis = new Jedis(socksSocketFactory, redisConfig);socksSocketFactory implementează redis.clients.jedis.JedisSocketFactory, iar redisConfig este JedisClientConfig aplicației. Fiți pregătit să vă conectați când rulează constructorul: poate efectua imediat autentificarea și alte setări Redis.
Urmăriți un socket de la creare la predare
Pentru o rută SOCKS5 neautentificată, fabrica poate crea un java.net.Socket cu un intermediar Proxy.Type.SOCKS explicit, apoi se poate conecta la gazda și portul Redis. Lăsați destinația nerezolvată dacă serverul SOCKS trebuie să rezolve numele gazdei.
Limitați încercarea de conectare și aplicați timpul de citire dorit. Dacă conexiunea eșuează, închideți acel socket și raportați JedisConnectionException; interfața fabricii nu declară IOException verificată.
Dacă Redis necesită TLS, stabiliți și verificați TLS înainte de a returna socketul. Nu se poate presupune că un indicator separat va transforma un socket arbitrar returnat de fabrică. Pentru un pool, repetați acest ciclu de viață cu un socket nou la fiecare apel al fabricii, inclusiv conexiunile de înlocuire.
O selecție HTTP într-un ProxySelector global nu este o implementare alternativă a acestei lucrări. Redis trimite RESP prin socketul său; nu devine astfel HTTP și nu negociază CONNECT.