Jedis SOCKS socket စက်ရုံက ဘာပြန်ပေးရမည်
Jedis 5.2.0 သည် Redis အတွက် အသင့်ဖြစ်သော ချိတ်ဆက်ပြီးသည့် socket ကို မျှော်လင့်သည်၊ လိုအပ်ပါက TLS အပါအဝင်၊ proxy ရွေးချယ်ရုံဖြင့် ထိုချိတ်ဆက်မှု မရပါ။
JedisSocketFactory.createSocket Redis လမ်းကြောင်းကို သယ်ဆောင်ရန် အသင့်ဖြစ်သော ချိတ်ဆက်ပြီးသည့် socket ကို ပြန်ပေးရမည်။ Jedis 5.2.0 တွင် application သည် ထိုစက်ရုံနှင့် ၎င်း၏ Redis client ဖွဲ့စည်းမှုကို ဤနေရာတွင် ပေးသည်:
var jedis = new Jedis(socksSocketFactory, redisConfig);socksSocketFactory redis.clients.jedis.JedisSocketFactory ကို အကောင်အထည်ဖော်ပြီး redisConfig သည် application ၏ JedisClientConfig ဖြစ်သည်။ constructor အလုပ်လုပ်ချိန်တွင် ချိတ်ဆက်ရန် အသင့်ရှိပါ၊ ၎င်းသည် အတည်ပြုခြင်းနှင့် အခြား Redis ပြင်ဆင်မှုများကို ချက်ချင်း လုပ်နိုင်သည်။
socket တစ်ခုကို ဖန်တီးမှုမှ လွှဲပြောင်းအပ်သည်အထိ ခြေရာခံပါ
အတည်ပြုမှုမရှိသော SOCKS5 လမ်းကြောင်းအတွက် စက်ရုံသည် java.net.Socket ကို ရှင်းလင်းသော Proxy.Type.SOCKS ကြားခံဖြင့် ဖန်တီးပြီး Redis host နှင့် port သို့ ချိတ်ဆက်နိုင်သည်။ ဦးတည်ရာကို မဖြေရှင်းဘဲ ထားပါ SOCKS ဆာဗာက host အမည်ကို ဖြေရှင်းရမည်ဆိုလျှင်။
ချိတ်ဆက်ရန် ကြိုးစားမှုကို ကန့်သတ်ပြီး ရည်ရွယ်ထားသော ဖတ်ချိန်သတ်မှတ်ချက်ကို ကျင့်သုံးပါ။ ချိတ်ဆက်မှု မအောင်မြင်ပါက ထို socket ကို ပိတ်ပြီး JedisConnectionException ကို အစီရင်ခံပါ; စက်ရုံ interface သည် စစ်ဆေးပြီးသော IOException ကို မကြေညာပါ။
Redis က TLS လိုအပ်ပါက socket ကို ပြန်မပေးမီ TLS ကို တည်ဆောက်ပြီး စစ်ဆေးပါ။ သီးခြား flag တစ်ခုက စက်ရုံပြန်ပေးသော မည်သည့် socket ကိုမဆို ပြောင်းလဲမည်ဟု မယူဆနိုင်ပါ။ pool အတွက် အစားထိုး ချိတ်ဆက်မှုများ အပါအဝင် စက်ရုံခေါ်တိုင်း socket အသစ်ဖြင့် ဤဘဝသံသရာကို ထပ်လုပ်ပါ။
ကမ္ဘာလုံးဆိုင်ရာ ProxySelector တွင် HTTP ရွေးချယ်မှုသည် ဤအလုပ်၏ အစားထိုး အကောင်အထည်ဖော်မှု မဟုတ်ပါ။ Redis သည် ၎င်း၏ socket မှတစ်ဆင့် RESP ပို့သည်; ထိုကြောင့် HTTP မဖြစ်လာပြီး CONNECT ကို ညှိနှိုင်းမည်မဟုတ်ပါ။