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

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 hører til Netty, og fabrikken og udvidelsesenum'en til org.apache.qpid.jms.

For en offentligt tilgængelig broker på en tilladt offentlig proxy-rute tilbyder SOCKS5-proxylisten værts- og portkandidater; bekræft, at den valgte node tillader brokerens faktiske vært og port. Udvidelsen returnerer en leverandør; hvert leverandørkald opretter en ny handler. At returnere én fastholdt mutabel handler til flere forbindelser ville bryde den ejerskabsordning.

Til SOCKS5-godkendelse skal du bruge handler-overbelastningen, der accepterer brugernavn og adgangskode. Behold broker-legitimationsoplysninger på JMS-forbindelsen, og bevar den rigtige AMQPS-broker-URI og TLS-navnet.

Udvidelsen understøtter Netty's HTTP-, SOCKS4- og SOCKS5-proxy-handlere. Til HTTP CONNECT skal mellemleddet tillade brokerens målport.

Relaterede artikler