Spring AMQP-তে TLS-বিহীন RabbitMQ সংযোগ ব্লক করতে SOCKS
ব্লকিং TLS-বিহীন AMQP সংযোগ পথের জন্য RabbitConnectionFactoryBean-এর মাধ্যমে প্রক্সি-সচেতন SocketFactory সংযুক্ত করুন।
একটি ব্লকিং, TLS-বিহীন AMQP সংযোগের জন্য Spring-এর RabbitConnectionFactoryBean RabbitMQ Java ক্লায়েন্টকে একটি SOCKS-সচেতন socket factory দিতে পারে।
যদি Commons Net ইতিমধ্যে উপলব্ধ থাকে, initialization-এর আগে বিদ্যমান 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 host, AMQP port, account এবং Spring connection-management সেটআপ অপরিবর্তিত রাখুন। broker-ই গন্তব্য থাকে; SocketFactory সেই socket তৈরি করে যা SOCKS-এর মাধ্যমে সেখানে পৌঁছায়। পাবলিক broker-এর বিরুদ্ধে একটি সংবেদনশীল-নয় পরীক্ষার জন্য যেখানে পাবলিক intermediary অনুমোদিত, SOCKS প্রক্সি তালিকা প্রার্থী দেয়; runtime যে SOCKS সংস্করণ সমর্থন করে তার সঙ্গে মিলিয়ে নিন এবং প্রকৃত broker host ও port-এ প্রবেশাধিকার নিশ্চিত করুন।
Commons Net-এর factory প্রদত্ত Proxy ব্যবহার করে একটি অসংযুক্ত java.net.Socket তৈরি করে। এরপর RabbitMQ-এর ব্লকিং সংযোগ কোড স্বাভাবিক সংযোগ পথে সেই socket সংযুক্ত করে। শুধু HTTP_PROXY export করলেই এই AMQP socket factory পাওয়া যায় না।
RabbitMQ নথিভুক্ত করে যে SocketFactory hook ব্লকিং I/O-তে প্রযোজ্য। NIO বা অন্য transport-এর জন্য কনফিগার করা ক্লায়েন্টের সেই transport-এর সমর্থিত hook দরকার। AMQPS-এর জন্য উপযুক্ত TLS socket factory ও গন্তব্য যাচাই রাখুন; উপরের সাধারণ factory দিয়ে তা প্রতিস্থাপন করা সম্পূর্ণ TLS কনফিগারেশন নয়।