استخدام SOCKS لاتصالات RabbitMQ غير المشفرة بـ TLS في Spring AMQP
إرفاق SocketFactory واعٍ بالوكيل عبر RabbitConnectionFactoryBean لمسار اتصال AMQP الحاجز وغير المشفر بـ TLS.
في اتصال AMQP حاجز وغير مشفر بـ TLS، يمكن لـ RabbitConnectionFactoryBean في Spring تمرير مصنع مقابس واعٍ بـ SOCKS إلى عميل RabbitMQ Java.
إذا كان Commons Net متاحًا بالفعل، فاضبط حبة المصنع القائمة قبل التهيئة:
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 الخاص بالتطبيق. أبقِ مضيف الوسيط ومنفذ AMQP والحساب وإعداد إدارة الاتصال في Spring. يبقى الوسيط هو الوجهة؛ ومصنع المقابس ينشئ المقابس التي تصل إليه عبر SOCKS. لاختبار غير حساس على وسيط عام حيث يُسمح بالوسطاء العامين، تقدم قائمة وكلاء SOCKS مرشحين؛ طابق إصدار SOCKS الذي يدعمه وقت التشغيل وتأكد من الوصول إلى مضيف الوسيط ومنفذه الفعليين.
ينشئ مصنع Commons Net كائن java.net.Socket غير متصل باستخدام Proxy المقدم. ثم يربط كود الاتصال الحاجز في RabbitMQ ذلك المقبس عبر مسار الاتصال العادي. مجرد تصدير HTTP_PROXY لا يوفر مصنع مقابس AMQP هذا.
توثق RabbitMQ أن خطاف SocketFactory ينطبق على الإدخال/الإخراج الحاجز. يحتاج العميل المهيأ لـ NIO أو لنقل آخر إلى الخطاف المدعوم لذلك النقل. بالنسبة إلى AMQPS، احتفظ بمصنع مقابس TLS مناسب والتحقق من الوجهة؛ واستبداله بالمصنع العادي أعلاه ليس إعدادًا كاملًا لـ TLS.