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 ก่อนคืนซ็อกเก็ต ไม่สามารถสันนิษฐานได้ว่าธงแยกจะแปลงซ็อกเก็ตใด ๆ ที่โรงงานคืนมา สำหรับพูล ให้ทำวงจรชีวิตนี้ซ้ำด้วยซ็อกเก็ตใหม่ทุกครั้งที่เรียกโรงงาน รวมถึงการเชื่อมต่อทดแทน

การเลือก HTTP ใน ProxySelector ระดับโลกไม่ใช่การนำงานนี้ไปทำแบบอื่น Redis ส่ง RESP ผ่านซ็อกเก็ตของตน จึงไม่ได้กลายเป็น HTTP หรือเจรจา CONNECT

บทความที่เกี่ยวข้อง