Qpid JMS의 Netty 전송은 연결 확장을 통해 새 프록시 핸들러를 얻을 수 있습니다:

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 타입입니다. 프록시 핸들러는 Netty에, 팩터리와 확장 enum은 org.apache.qpid.jms에 속합니다.

허용된 공용 프록시 경로에서 공개적으로 도달 가능한 브로커의 경우 SOCKS5 프록시 목록이 호스트와 포트 후보를 제공합니다. 선택한 노드가 브로커의 실제 호스트와 포트를 허용하는지 확인하십시오. 확장은 공급자를 반환하며, 공급자 호출마다 새 핸들러가 만들어집니다. 캡처된 하나의 가변 핸들러를 여러 연결에 반환하면 그러한 소유권 규칙을 위반합니다.

SOCKS5 인증에는 사용자 이름과 비밀번호를 받는 핸들러 오버로드를 사용하십시오. 브로커 자격 증명은 JMS 연결에 두고 실제 AMQPS 브로커 URI와 TLS 이름을 유지하십시오.

확장은 Netty의 HTTP, SOCKS4, SOCKS5 프록시 핸들러를 지원합니다. HTTP CONNECT의 경우 중개자가 브로커의 대상 포트를 허용해야 합니다.

관련 글