Što SOCKS tvornica socketa za Jedis mora vratiti
Jedis 5.2.0 očekuje povezan socket spreman za Redis, uključujući TLS kada je potreban; samo odabir proxyja ne daje tu vezu.
JedisSocketFactory.createSocket mora vratiti povezan socket spreman prenositi Redis promet. U Jedis 5.2.0 aplikacija predaje tu tvornicu i svoju konfiguraciju Redis klijenta ovdje:
var jedis = new Jedis(socksSocketFactory, redisConfig);socksSocketFactory implementira redis.clients.jedis.JedisSocketFactory, a redisConfig je aplikacijin JedisClientConfig. Budite spremni za povezivanje kad se konstruktor pokrene: može odmah izvršiti autentifikaciju i druge Redis postavke.
Pratite jedan socket od stvaranja do predaje
Za neautentificiranu SOCKS5 rutu tvornica može stvoriti java.net.Socket s eksplicitnim Proxy.Type.SOCKS posrednikom, a zatim se spojiti na Redis host i port. Ostavite odredište nerazriješeno ako SOCKS poslužitelj treba razriješiti ime hosta.
Ograničite pokušaj povezivanja i primijenite predviđeno vrijeme čitanja. Ako veza ne uspije, zatvorite taj socket i prijavite JedisConnectionException; sučelje tvornice ne deklarira provjereni IOException.
Ako Redis zahtijeva TLS, uspostavite i provjerite TLS prije vraćanja socketa. Ne može se pretpostaviti da će zasebna zastavica preobraziti proizvoljan socket koji vrati tvornica. Za pool ponavljajte ovaj životni ciklus s novim socketom pri svakom pozivu tvornice, uključujući zamjenske veze.
Odabir HTTP-a u globalnom ProxySelector nije alternativna implementacija ovog posla. Redis šalje RESP preko svog socketa; time ne postaje HTTP niti pregovara CONNECT.