Šta SOCKS fabrika 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 da prenosi Redis saobraćaj. U Jedis 5.2.0 aplikacija daje tu fabriku 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 kada se konstruktor pokrene: on može odmah izvršiti autentifikaciju i druga Redis podešavanja.
Pratite jedan socket od stvaranja do predaje
Za neautentificiranu SOCKS5 rutu fabrika može stvoriti java.net.Socket s eksplicitnim Proxy.Type.SOCKS posrednikom, a zatim se povezati na Redis host i port. Ostavite odredište nerazriješeno ako SOCKS server treba sam razriješiti ime hosta.
Ograničite pokušaj povezivanja i primijenite predviđeni timeout čitanja. Ako veza ne uspije, zatvorite taj socket i prijavite JedisConnectionException; interfejs fabrike ne deklariše provjereni IOException.
Ako Redis zahtijeva TLS, uspostavite i provjerite TLS prije vraćanja socketa. Ne može se pretpostaviti da će zasebna zastavica transformirati proizvoljan socket koji vrati fabrika. Za pool ponavljajte ovaj životni ciklus s novim socketom pri svakom pozivu fabrike, uključujući zamjenske veze.
HTTP odabir u globalnom ProxySelector nije alternativna implementacija ovog posla. Redis šalje RESP preko svog socketa; time ne postaje HTTP niti pregovara CONNECT.