Qpid JMS' Netty-transport kan hente en ny proxy-handler via en tilkoblingsutvidelse:

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 og InetSocketAddress er JDK-typer. Proxy-handlerne tilhører Netty, og fabrikken og utvidelsesenumen til org.apache.qpid.jms.

For en offentlig tilgjengelig broker på en tillatt offentlig proxy-rute tilbyr SOCKS5-proxylisten verts- og portkandidater; bekreft at den valgte noden tillater brokerens faktiske vert og port. Utvidelsen returnerer en leverandør; hvert leverandørkall oppretter en ny handler. Å returnere én fanget mutabel handler for flere tilkoblinger ville bryte den eierskapsordningen.

For SOCKS5-autentisering bruker du handler-overlastingen som godtar brukernavn og passord. Hold broker-legitimasjonen på JMS-tilkoblingen og behold den ekte AMQPS-broker-URI-en og TLS-navnet.

Utvidelsen støtter Netty sine HTTP-, SOCKS4- og SOCKS5-proxy-handlere. For HTTP CONNECT må mellomleddet tillate brokerens målport.

Relaterte artikler