Đối với kết nối AMQP dạng chặn và không TLS, RabbitConnectionFactoryBean của Spring có thể chuyển một nhà máy socket nhận biết SOCKS cho ứng dụng khách Java của RabbitMQ.

Nếu Commons Net đã có sẵn, hãy cấu hình factory bean hiện có trước khi khởi tạo:

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 là RabbitConnectionFactoryBean của ứng dụng. Giữ nguyên máy chủ broker, cổng AMQP, tài khoản và thiết lập quản lý kết nối của Spring. Broker vẫn là đích; SocketFactory tạo ra các socket tiếp cận nó qua SOCKS. Đối với một thử nghiệm không nhạy cảm với broker công khai nơi các trung gian công khai được phép, danh sách proxy SOCKS cung cấp các ứng viên; khớp với phiên bản SOCKS mà runtime hỗ trợ và xác nhận quyền truy cập tới máy chủ và cổng broker thực tế.

Nhà máy của Commons Net tạo một java.net.Socket chưa kết nối bằng Proxy được cung cấp. Sau đó mã kết nối dạng chặn của RabbitMQ kết nối socket đó theo đường kết nối thông thường. Chỉ xuất HTTP_PROXY không cung cấp nhà máy socket AMQP này.

RabbitMQ ghi rõ rằng hook SocketFactory áp dụng cho I/O dạng chặn. Một ứng dụng khách được cấu hình cho NIO hoặc phương thức vận chuyển khác cần hook mà phương thức đó hỗ trợ. Đối với AMQPS, hãy giữ một nhà máy socket TLS phù hợp và việc xác minh đích; thay thế nó bằng nhà máy đơn giản ở trên không phải là cấu hình TLS đầy đủ.

Bài viết liên quan