De Netty-transport van Qpid JMS kan via een verbindingsuitbreiding een nieuwe proxy-handler krijgen:

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 en InetSocketAddress zijn JDK-typen. De proxy-handlers horen bij Netty, en de factory en de uitbreidings-enum bij org.apache.qpid.jms.

Voor een publiek bereikbare broker op een toegestane openbare proxy-route biedt de SOCKS5-proxylijst host- en poortkandidaten; bevestig dat het gekozen knooppunt de werkelijke host en poort van de broker toestaat. De uitbreiding retourneert een leverancier; elke leveranciersaanroep maakt een nieuwe handler. Het retourneren van één vastgelegde veranderlijke handler voor meerdere verbindingen zou die eigendomsregeling schenden.

Gebruik voor SOCKS5-authenticatie de handler-overload die een gebruikersnaam en wachtwoord accepteert. Houd de broker-inloggegevens op de JMS-verbinding en behoud de echte AMQPS-broker-URI en de TLS-naam.

De uitbreiding ondersteunt de HTTP-, SOCKS4- en SOCKS5-proxy-handlers van Netty. Voor HTTP CONNECT moet de tussenpartij de doelpoort van de broker toestaan.

Gerelateerde artikelen