JedisSocketFactory.createSocket deve devolver um socket ligado e pronto para transportar tráfego Redis. No Jedis 5.2.0, a aplicação fornece essa fábrica e a sua configuração de cliente Redis aqui:

var jedis = new Jedis(socksSocketFactory, redisConfig);

socksSocketFactory implementa redis.clients.jedis.JedisSocketFactory, e redisConfig é o JedisClientConfig da aplicação. Esteja pronto para ligar quando o construtor executar: pode realizar a autenticação e outras configurações do Redis imediatamente.

Acompanhe um socket desde a criação até à entrega

Para uma rota SOCKS5 sem autenticação, a fábrica pode criar um java.net.Socket com um intermediário Proxy.Type.SOCKS explícito e depois ligar ao anfitrião e à porta do Redis. Deixe o destino por resolver se o servidor SOCKS deve resolver o nome do anfitrião.

Limite a tentativa de ligação e aplique o tempo limite de leitura pretendido. Se a ligação falhar, feche esse socket e reporte JedisConnectionException; a interface da fábrica não declara IOException verificada.

Se o Redis exigir TLS, estabeleça e verifique TLS antes de devolver o socket. Não se pode presumir que um sinalizador separado transforme um socket arbitrário devolvido pela fábrica. Para um conjunto, repita este ciclo de vida com um socket novo em cada chamada à fábrica, incluindo ligações de substituição.

Uma seleção HTTP num ProxySelector global não é uma implementação alternativa deste trabalho. O Redis envia RESP pelo seu socket; não se torna por isso HTTP nem negoceia CONNECT.

Artigos relacionados