การรับส่ง Netty ของ Qpid JMS สามารถรับ proxy handler ใหม่ผ่านส่วนขยายการเชื่อมต่อ:

Supplier<ProxyHandler> handlers = () ->
    new Socks5ProxyHandler(
        new InetSocketAddress("proxy.example", 1080));

JmsConnectionFactory factory = new JmsConnectionFactory(
    "amqps://broker.example:5671");
factory.setExtension(
    JmsConnectionExtensions.PROXY_HANDLER_SUPPLIER.toString(),
    (connection, remote) -> handlers);

Supplier และ InetSocketAddress เป็นชนิดของ JDK ส่วน proxy handler เป็นของ Netty และ factory กับ extension enum เป็นของ org.apache.qpid.jms

สำหรับ broker ที่เข้าถึงได้สาธารณะบนเส้นทาง proxy สาธารณะที่ได้รับอนุญาต รายการ proxy SOCKS5 เสนอผู้สมัคร host และ port ตรวจสอบว่าโหนดที่เลือกอนุญาต host และ port จริงของ broker หรือไม่ ส่วนขยายจะคืนผู้ให้บริการ และการเรียกผู้ให้บริการแต่ละครั้งจะสร้าง handler ใหม่ การคืน handler ที่เปลี่ยนแปลงได้ซึ่งถูกจับไว้เพียงตัวเดียวสำหรับหลายการเชื่อมต่อจะละเมิดข้อกำหนดความเป็นเจ้าของนั้น

สำหรับการตรวจสอบสิทธิ์ SOCKS5 ให้ใช้ handler overload ที่รับชื่อผู้ใช้และรหัสผ่าน เก็บข้อมูลรับรองของ broker ไว้บนการเชื่อมต่อ JMS และคง AMQPS broker URI จริงกับชื่อ TLS ไว้

ส่วนขยายรองรับ proxy handler HTTP, SOCKS4 และ SOCKS5 ของ Netty สำหรับ HTTP CONNECT ตัวกลางต้องอนุญาต port ปลายทางของ broker

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