Што павінна вяртаць фабрыка сокетаў SOCKS для Jedis
Jedis 5.2.0 чакае падключаны сокет, гатовы да Redis, уключаючы TLS пры неабходнасці; адзін толькі выбар проксі не дае гэтага злучэння.
JedisSocketFactory.createSocket павінна вяртаць падключаны сокет, гатовы перадаваць трафік Redis. У Jedis 5.2.0 праграма перадае гэтую фабрыку і канфігурацыю кліента Redis тут:
var jedis = new Jedis(socksSocketFactory, redisConfig);socksSocketFactory рэалізуе redis.clients.jedis.JedisSocketFactory, а redisConfig — гэта JedisClientConfig праграмы. Будзьце гатовыя да злучэння ўжо пры запуску канструктара: ён можа адразу выканаць аўтэнтыфікацыю і іншыя налады Redis.
Прасочвайце адзін сокет ад стварэння да перадачы
Для маршруту SOCKS5 без аўтэнтыфікацыі фабрыка можа стварыць java.net.Socket з явным пасрэднікам Proxy.Type.SOCKS, а затым падключыцца да хоста і порта Redis. Пакіньце пункт прызначэння нявырашаным калі сервер SOCKS павінен сам вырашыць імя хоста.
Абмяжуйце спробу злучэння і ўжывіце зададзены тайм-аўт чытання. Калі злучэнне не ўдалося, зачыніце гэты сокет і паведаміце JedisConnectionException; інтэрфейс фабрыкі не абвяшчае правераны IOException.
Калі Redis патрабуе TLS, устанавіце і праверце TLS перад вяртаннем сокета. Нельга меркаваць, што асобны сцяг пераўтворыць адвольны сокет, вернуты фабрыкай. Для пула паўтарайце гэты жыццёвы цыкл з новым сокетам пры кожным выкліку фабрыкі, уключаючы заменныя злучэнні.
Выбар HTTP у глабальным ProxySelector не з’яўляецца альтэрнатыўнай рэалізацыяй гэтай працы. Redis адпраўляе RESP праз свой сокет; ад гэтага ён не робіцца HTTP і не ўзгадняе CONNECT.