Jedis-тің SOCKS сокет фабрикасы қандай нәтиже қайтаруы керек
Jedis 5.2.0 Redis үшін дайын қосылған сокетті күтеді, қажет болса TLS-пен бірге; тек прокси таңдау сол қосылымды бермейді.
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 орнатып, тексеріңіз. Бөлек жалауша фабрика қайтарған кез келген сокетті түрлендіреді деп болжауға болмайды. Пул үшін бұл өмірлік циклді әр фабрика шақыруында жаңа сокетпен, оның ішінде ауыстыру қосылымдарымен қайталаңыз.
Жаһандық ProxySelector ішіндегі HTTP таңдауы бұл жұмыстың балама іске асырылуы емес. Redis өз сокеті арқылы RESP жібереді; осыдан ол HTTP болып қалмайды және CONNECT туралы келісім жүргізбейді.