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.

Схожі статті