JedisSocketFactory.createSocket musi zwracać połączone gniazdo gotowe do przenoszenia ruchu Redis. W Jedis 5.2.0 aplikacja przekazuje tę fabrykę i swoją konfigurację klienta Redis tutaj:

var jedis = new Jedis(socksSocketFactory, redisConfig);

socksSocketFactory implementuje redis.clients.jedis.JedisSocketFactory, a redisConfig to JedisClientConfig aplikacji. Bądź gotowy do połączenia, gdy uruchamia się konstruktor: może od razu wykonać uwierzytelnianie i inne ustawienia Redis.

Śledź jedno gniazdo od utworzenia do przekazania

Dla trasy SOCKS5 bez uwierzytelniania fabryka może utworzyć java.net.Socket z jawnym pośrednikiem Proxy.Type.SOCKS, a następnie połączyć się z hostem i portem Redis. Pozostaw cel nierozwiązany jeśli serwer SOCKS ma rozwiązać nazwę hosta.

Ogranicz próbę połączenia i zastosuj zamierzony limit czasu odczytu. Jeśli połączenie się nie uda, zamknij to gniazdo i zgłoś JedisConnectionException; interfejs fabryki nie deklaruje sprawdzanego IOException.

Jeśli Redis wymaga TLS, ustanów i zweryfikuj TLS przed zwróceniem gniazda. Nie można zakładać, że osobna flaga przekształci dowolne gniazdo zwrócone przez fabrykę. W przypadku puli powtarzaj ten cykl życia z nowym gniazdem przy każdym wywołaniu fabryki, łącznie z połączeniami zastępczymi.

Wybór HTTP w globalnym ProxySelector nie jest alternatywną implementacją tej pracy. Redis wysyła RESP przez swoje gniazdo; nie staje się przez to HTTP ani nie negocjuje CONNECT.

Powiązane artykuły