Spring AMQP တွင် TLS မဟုတ်သော RabbitMQ ချိတ်ဆက်မှုများကို ပိတ်ဆို့ရန် SOCKS
ပိတ်ဆို့နေသော TLS မဟုတ်သည့် AMQP ချိတ်ဆက်မှုလမ်းကြောင်းအတွက် RabbitConnectionFactoryBean မှတစ်ဆင့် proxy ကိုသိသော SocketFactory ကို ချိတ်ဆက်ပါ။
ပိတ်ဆို့နေသော TLS မဟုတ်သည့် AMQP ချိတ်ဆက်မှုအတွက် Spring ၏ RabbitConnectionFactoryBean သည် SOCKS ကိုသိသော socket factory ကို RabbitMQ Java client သို့ ပေးပို့နိုင်သည်။
Commons Net ရှိပြီးဖြစ်ပါက စတင်ခြင်းမပြုမီ ရှိပြီးသား factory bean ကို ပြင်ဆင်ပါ:
var socksProxy = new java.net.Proxy(
java.net.Proxy.Type.SOCKS,
new java.net.InetSocketAddress("proxy.example", 1080));
rabbitFactoryBean.setSocketFactory(
new org.apache.commons.net.DefaultSocketFactory(socksProxy));
rabbitFactoryBean သည် application ၏ RabbitConnectionFactoryBean ဖြစ်သည်။ ၎င်း၏ broker host၊ AMQP port၊ account နှင့် Spring ချိတ်ဆက်မှုစီမံခန့်ခွဲမှု ဆက်တင်ကို ထိန်းသိမ်းပါ။ broker သည် ဦးတည်ရာဖြစ်နေဆဲဖြစ်သည်။ SocketFactory သည် SOCKS မှတစ်ဆင့် ၎င်းသို့ရောက်သော socket များကို ဖန်တီးသည်။ အများသူငှာ ကြားခံများကို ခွင့်ပြုထားသော အများသူငှာ broker အတွက် ထိခိုက်မှုမရှိသော စမ်းသပ်မှုအတွက် SOCKS proxy စာရင်း သည် ကိုယ်စားလှယ်လောင်းများကို ပေးသည်။ runtime ပံ့ပိုးသော SOCKS ဗားရှင်းနှင့် ကိုက်ညီပြီး အမှန်တကယ် broker host နှင့် port သို့ ဝင်ရောက်နိုင်မှုကို အတည်ပြုပါ။
Commons Net ၏ factory သည် ပေးထားသော Proxy ကိုအသုံးပြု၍ မချိတ်ဆက်ရသေးသော java.net.Socket ကို ဖန်တီးသည်။ ထို့နောက် RabbitMQ ၏ ပိတ်ဆို့သည့် ချိတ်ဆက်မှုကုဒ်သည် ထို socket ကို ၎င်း၏ ပုံမှန်ချိတ်ဆက်မှုလမ်းကြောင်းဖြင့် ချိတ်ဆက်သည်။ HTTP_PROXY ကို တင်ပို့ရုံဖြင့် ဤ AMQP socket factory ကို မပေးပါ။
RabbitMQ သည် SocketFactory hook သည် ပိတ်ဆို့သော I/O တွင် သက်ရောက်သည်ဟု မှတ်တမ်းတင်ထားသည်။ NIO သို့မဟုတ် အခြား transport အတွက် ပြင်ဆင်ထားသော client သည် ထို transport ပံ့ပိုးသော hook လိုအပ်သည်။ AMQPS အတွက် သင့်လျော်သော TLS socket factory နှင့် ဦးတည်ရာ အတည်ပြုချက်ကို ထိန်းသိမ်းပါ။ အထက်ပါ ရိုးရှင်းသော factory ဖြင့် အစားထိုးခြင်းသည် ပြည့်စုံသော TLS ဆက်တင် မဟုတ်ပါ။