Co musi zwracać fabryka gniazd SOCKS dla Jedis
Jedis 5.2.0 oczekuje połączonego gniazda gotowego dla Redis, łącznie z TLS, gdy jest wymagany; samo wybranie proxy nie zapewnia tego połączenia.
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.