차단형 비TLS AMQP 연결의 경우 Spring의 RabbitConnectionFactoryBean은 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 연결 관리 설정을 그대로 유지하십시오. 브로커는 여전히 목적지이며, SocketFactory는 SOCKS를 통해 브로커에 도달하는 소켓을 만듭니다. 공개 중계자가 허용되는 공개 브로커에 대한 비민감 테스트에서는 SOCKS 프록시 목록이 후보를 제공합니다. 런타임이 지원하는 SOCKS 버전을 맞추고 실제 브로커 호스트와 포트에 대한 접근을 확인하십시오.

Commons Net의 팩터리는 제공된 Proxy를 사용하여 연결되지 않은 java.net.Socket을 만듭니다. 그런 다음 RabbitMQ의 차단형 연결 코드가 일반 연결 경로로 그 소켓을 연결합니다. HTTP_PROXY를 내보내는 것만으로는 이 AMQP 소켓 팩터리가 제공되지 않습니다.

RabbitMQ는 SocketFactory 훅이 차단형 I/O에 적용된다고 문서화합니다. NIO나 다른 전송에 맞게 구성된 클라이언트는 해당 전송이 지원하는 훅이 필요합니다. AMQPS의 경우 적절한 TLS 소켓 팩터리와 목적지 검증을 유지하십시오. 위의 단순 팩터리로 교체하는 것은 완전한 TLS 구성이 아닙니다.

관련 글