Phần truyền tải Netty của Qpid JMS có thể nhận một trình xử lý proxy mới thông qua phần mở rộng kết nối:

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 và InetSocketAddress là các kiểu JDK. Các trình xử lý proxy thuộc Netty, còn factory và enum phần mở rộng thuộc org.apache.qpid.jms.

Đối với broker có thể truy cập công khai trên tuyến proxy công cộng được phép, danh sách proxy SOCKS5 cung cấp các ứng viên host và port; hãy xác nhận rằng nút đã chọn cho phép host và port thực tế của broker. Phần mở rộng trả về một nhà cung cấp; mỗi lần gọi nhà cung cấp tạo một trình xử lý mới. Việc trả về một trình xử lý có thể thay đổi đã bị giữ cho nhiều kết nối sẽ vi phạm quy tắc sở hữu đó.

Để xác thực SOCKS5, hãy dùng nạp chồng trình xử lý chấp nhận tên người dùng và mật khẩu. Giữ thông tin đăng nhập của broker trên kết nối JMS và giữ nguyên URI broker AMQPS thực cùng tên TLS.

Phần mở rộng hỗ trợ các trình xử lý proxy HTTP, SOCKS4 và SOCKS5 của Netty. Với HTTP CONNECT, bên trung gian phải cho phép port đích của broker.

Bài viết liên quan