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.

Подобни статии