Čo musí továreň SOCKS socketov pre Jedis vracať
Jedis 5.2.0 očakáva pripojený socket pripravený pre Redis, vrátane TLS, ak je potrebné; samotná voľba proxy toto spojenie nezabezpečí.
JedisSocketFactory.createSocket musí vracať pripojený socket pripravený prenášať prevádzku Redis. V Jedis 5.2.0 aplikácia odovzdáva túto továreň a svoju konfiguráciu klienta Redis tu:
var jedis = new Jedis(socksSocketFactory, redisConfig);socksSocketFactory implementuje redis.clients.jedis.JedisSocketFactory a redisConfig je JedisClientConfig aplikácie. Buďte pripravení na spojenie už pri spustení konštruktora: môže okamžite vykonať autentifikáciu a ďalšie nastavenia Redis.
Sledujte jeden socket od vytvorenia po odovzdanie
Pre neautentizovanú trasu SOCKS5 môže továreň vytvoriť java.net.Socket s explicitným prostredníkom Proxy.Type.SOCKS a potom sa pripojiť k hostiteľovi a portu Redis. Nechajte cieľ nevyriešený ak má názov hostiteľa vyriešiť server SOCKS.
Obmedzte pokus o pripojenie a použite zamýšľaný časový limit čítania. Ak sa spojenie nepodarí, zatvorte tento socket a nahláste JedisConnectionException; rozhranie továrne nedeklaruje kontrolovanú IOException.
Ak Redis vyžaduje TLS, nadviažte a overte TLS pred vrátením socketu. Nemožno predpokladať, že samostatný príznak premení ľubovoľný socket vrátený továrňou. Pri poole tento životný cyklus opakujte s novým socketom pri každom volaní továrne, vrátane náhradných spojení.
Voľba HTTP v globálnom ProxySelector nie je alternatívnou implementáciou tejto práce. Redis posiela RESP cez svoj socket; tým sa nestáva HTTP ani nevyjednáva CONNECT.