Jedis SOCKS socket fabrikasi nima qaytarishi kerak
Jedis 5.2.0 Redis uchun tayyor ulangan socketni kutadi, zarur bo‘lsa TLS bilan; faqat proksi tanlash bu ulanishni bermaydi.
JedisSocketFactory.createSocket Redis trafigini tashishga tayyor ulangan socketni qaytarishi kerak. Jedis 5.2.0 da dastur shu fabrika va o‘zining Redis mijozi konfiguratsiyasini shu yerda beradi:
var jedis = new Jedis(socksSocketFactory, redisConfig);socksSocketFactory redis.clients.jedis.JedisSocketFactory ni amalga oshiradi, redisConfig esa dasturning JedisClientConfig obyektidir. Konstruktor ishga tushganda ulanishga tayyor bo‘ling: u autentifikatsiya va boshqa Redis sozlamalarini darhol bajarishi mumkin.
Bitta socketni yaratilishdan topshirishgacha kuzatib boring
Autentifikatsiyasiz SOCKS5 yo‘nalishi uchun fabrika java.net.Socket ni aniq Proxy.Type.SOCKS vositachisi bilan yaratib, so‘ng Redis xosti va portiga ulanishi mumkin. Manzilni hal qilinmagan holda qoldiring agar SOCKS serveri xost nomini o‘zi hal qilishi kerak bo‘lsa.
Ulanish urinishini cheklang va mo‘ljallangan o‘qish taymautini qo‘llang. Ulanish muvaffaqiyatsiz bo‘lsa, o‘sha socketni yoping va JedisConnectionException haqida xabar bering; fabrika interfeysi tekshirilgan IOException ni e’lon qilmaydi.
Agar Redis TLS talab qilsa, socketni qaytarishdan oldin TLS o‘rnating va tekshiring. Alohida bayroq fabrika qaytargan ixtiyoriy socketni o‘zgartiradi deb taxmin qilish mumkin emas. Hovuz uchun bu hayot siklini har bir fabrika chaqiruvida yangi socket bilan, jumladan almashtirish ulanishlari bilan takrorlang.
Global ProxySelector ichidagi HTTP tanlovi bu ishning muqobil amalga oshirilishi emas. Redis RESP ni o‘z socketi orqali yuboradi; shu bilan u HTTP bo‘lib qolmaydi va CONNECT bo‘yicha muzokara qilmaydi.