สำหรับการเชื่อมต่อ AMQP แบบบล็อกและไม่ใช้ TLS นั้น RabbitConnectionFactoryBean ของ Spring สามารถส่งโรงงานซ็อกเก็ตที่รู้จัก SOCKS ไปยังไคลเอนต์ Java ของ RabbitMQ ได้

หากมี 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 ของแอปพลิเคชัน ให้คงโฮสต์ของโบรกเกอร์ พอร์ต AMQP บัญชี และการตั้งค่าการจัดการการเชื่อมต่อของ Spring ไว้ โบรกเกอร์ยังคงเป็นปลายทาง ส่วน SocketFactory จะสร้างซ็อกเก็ตที่ไปถึงโบรกเกอร์ผ่าน SOCKS สำหรับการทดสอบที่ไม่ละเอียดอ่อนกับโบรกเกอร์สาธารณะที่อนุญาตตัวกลางสาธารณะ รายการพร็อกซี SOCKS มีผู้สมัครให้เลือก จับคู่เวอร์ชัน SOCKS ที่รันไทม์รองรับและยืนยันการเข้าถึงโฮสต์และพอร์ตจริงของโบรกเกอร์

โรงงานของ Commons Net สร้าง java.net.Socket ที่ยังไม่เชื่อมต่อโดยใช้ Proxy ที่ให้มา จากนั้นโค้ดการเชื่อมต่อแบบบล็อกของ RabbitMQ จะเชื่อมต่อซ็อกเก็ตนั้นผ่านเส้นทางการเชื่อมต่อปกติ การส่งออก HTTP_PROXY เท่านั้นไม่ได้ให้โรงงานซ็อกเก็ต AMQP นี้

RabbitMQ ระบุว่าฮุก SocketFactory ใช้กับการรับส่งข้อมูลแบบบล็อก ไคลเอนต์ที่กำหนดค่าสำหรับ NIO หรือทรานสปอร์ตอื่นต้องใช้ฮุกที่ทรานสปอร์ตนั้นรองรับ สำหรับ AMQPS ให้คงโรงงานซ็อกเก็ต TLS ที่เหมาะสมและการตรวจสอบปลายทางไว้ การแทนที่ด้วยโรงงานอย่างง่ายข้างต้นไม่ใช่การกำหนดค่า TLS ที่สมบูรณ์

บทความที่เกี่ยวข้อง