Le transport Netty de Qpid JMS peut obtenir un nouveau handler de proxy via une extension de connexion :

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 et InetSocketAddress sont des types du JDK. Les handlers de proxy appartiennent à Netty, et la fabrique ainsi que l'énumération d'extension à org.apache.qpid.jms.

Pour un broker joignable publiquement sur une route de proxy publique autorisée, la liste de proxys SOCKS5 propose des candidats d'hôte et de port ; vérifiez que le nœud choisi autorise l'hôte et le port réels du broker. L'extension renvoie un fournisseur ; chaque appel au fournisseur crée un nouveau handler. Renvoyer un seul handler mutable capturé pour plusieurs connexions violerait cette organisation de propriété.

Pour l'authentification SOCKS5, utilisez la surcharge de handler acceptant un nom d'utilisateur et un mot de passe. Gardez les identifiants du broker sur la connexion JMS et conservez l'URI réelle du broker AMQPS ainsi que le nom TLS.

L'extension prend en charge les handlers de proxy HTTP, SOCKS4 et SOCKS5 de Netty. Pour HTTP CONNECT, l'intermédiaire doit autoriser le port cible du broker.

Articles similaires