Spring AMQP ରେ TLS ନଥିବା RabbitMQ ସଂଯୋଗକୁ ବ୍ଲକ କରିବା ପାଇଁ SOCKS
ବ୍ଲକିଂ TLS ନଥିବା AMQP ସଂଯୋଗ ପଥ ପାଇଁ RabbitConnectionFactoryBean ମାଧ୍ୟମରେ ପ୍ରକ୍ସି-ସଚେତନ SocketFactory ସଂଯୋଗ କରନ୍ତୁ।
ଏକ ବ୍ଲକିଂ, TLS ନଥିବା AMQP ସଂଯୋଗ ପାଇଁ Spring ର RabbitConnectionFactoryBean RabbitMQ Java କ୍ଲାଏଣ୍ଟକୁ SOCKS-ସଚେତନ ସକେଟ ଫ୍ୟାକ୍ଟ୍ରି ଦେଇପାରେ।
ଯଦି 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 ହେଉଛି ଆପ୍ଲିକେସନର RabbitConnectionFactoryBean। ଏହାର broker ହୋଷ୍ଟ, AMQP ପୋର୍ଟ, ଖାତା ଏବଂ Spring ସଂଯୋଗ-ପରିଚାଳନା ସେଟଅପ୍ ରଖନ୍ତୁ। broker ହିଁ ଲକ୍ଷ୍ୟ ରହେ; SocketFactory ସେହି ସକେଟ ତିଆରି କରେ ଯାହା SOCKS ମାଧ୍ୟମରେ ସେଠାରେ ପହଞ୍ଚେ। ସାର୍ବଜନୀନ broker ବିରୁଦ୍ଧରେ ସମ୍ବେଦନଶୀଳ-ନଥିବା ପରୀକ୍ଷା ପାଇଁ, ଯେଉଁଠାରେ ସାର୍ବଜନୀନ ମଧ୍ୟସ୍ଥ ଅନୁମତିପ୍ରାପ୍ତ, SOCKS ପ୍ରକ୍ସି ତାଲିକା ପ୍ରାର୍ଥୀ ଦିଏ; runtime ସମର୍ଥନ କରୁଥିବା SOCKS ସଂସ୍କରଣ ସହିତ ମେଳ କରନ୍ତୁ ଏବଂ ପ୍ରକୃତ broker ହୋଷ୍ଟ ଓ ପୋର୍ଟକୁ ପ୍ରବେଶ ନିଶ୍ଚିତ କରନ୍ତୁ।
Commons Net ର ଫ୍ୟାକ୍ଟ୍ରି ଦିଆଯାଇଥିବା Proxy ବ୍ୟବହାର କରି ସଂଯୋଗ ନଥିବା java.net.Socket ତିଆରି କରେ। ତା’ପରେ RabbitMQ ର ବ୍ଲକିଂ ସଂଯୋଗ କୋଡ୍ ସେହି ସକେଟକୁ ଏହାର ସାଧାରଣ ସଂଯୋଗ ପଥ ଦେଇ ସଂଯୋଗ କରେ। କେବଳ HTTP_PROXY ରପ୍ତାନି କରିବା ଏହି AMQP ସକେଟ ଫ୍ୟାକ୍ଟ୍ରି ଦିଏ ନାହିଁ।
RabbitMQ ଦସ୍ତାବିଜ କରେ ଯେ SocketFactory ହୁକ୍ ବ୍ଲକିଂ I/O ଉପରେ ପ୍ରଯୁଜ୍ୟ। NIO କିମ୍ବା ଅନ୍ୟ ଟ୍ରାନ୍ସପୋର୍ଟ ପାଇଁ କନଫିଗର ହୋଇଥିବା କ୍ଲାଏଣ୍ଟକୁ ସେହି ଟ୍ରାନ୍ସପୋର୍ଟର ସମର୍ଥିତ ହୁକ୍ ଆବଶ୍ୟକ। AMQPS ପାଇଁ, ଉପଯୁକ୍ତ TLS ସକେଟ ଫ୍ୟାକ୍ଟ୍ରି ଏବଂ ଲକ୍ଷ୍ୟ ଯାଞ୍ଚ ରଖନ୍ତୁ; ଉପରୋକ୍ତ ସାଧାରଣ ଫ୍ୟାକ୍ଟ୍ରି ସହିତ ଏହାକୁ ବଦଳାଇବା ସମ୍ପୂର୍ଣ୍ଣ TLS କନଫିଗରେସନ୍ ନୁହେଁ।