Ce qu’une fabrique de sockets SOCKS Jedis doit renvoyer
Jedis 5.2.0 attend un socket connecté et prêt pour Redis, TLS compris lorsque nécessaire ; le seul choix d’un proxy ne fournit pas cette connexion.
JedisSocketFactory.createSocket doit renvoyer un socket connecté, prêt à transporter le trafic Redis. Dans Jedis 5.2.0, l’application fournit cette fabrique et sa configuration de client Redis ici :
var jedis = new Jedis(socksSocketFactory, redisConfig);socksSocketFactory implémente redis.clients.jedis.JedisSocketFactory, et redisConfig est le JedisClientConfig de l’application. Soyez prêt à vous connecter dès l’exécution du constructeur : il peut effectuer l’authentification et les autres réglages Redis immédiatement.
Suivre un socket de sa création à sa remise
Pour une route SOCKS5 non authentifiée, la fabrique peut créer un java.net.Socket avec un intermédiaire Proxy.Type.SOCKS explicite, puis se connecter à l’hôte et au port Redis. Laissez la destination non résolue si le serveur SOCKS doit résoudre le nom d’hôte.
Bornez la tentative de connexion et appliquez le délai de lecture prévu. Si la connexion échoue, fermez ce socket et signalez JedisConnectionException ; l’interface de fabrique ne déclare pas IOException vérifiée.
Si Redis exige TLS, établissez et vérifiez TLS avant de rendre le socket. On ne peut pas supposer qu’un indicateur séparé transforme un socket quelconque renvoyé par la fabrique. Pour un pool, répétez ce cycle de vie avec un socket neuf à chaque appel de fabrique, y compris les connexions de remplacement.
Un choix HTTP dans un ProxySelector global n’est pas une implémentation alternative de ce travail. Redis envoie du RESP sur son socket ; il ne devient pas HTTP pour autant et ne négocie pas CONNECT.