Какво трябва да върне 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.