El transporte Netty de Qpid JMS puede obtener un controlador de proxy nuevo mediante una extensión de conexión:

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 e InetSocketAddress son tipos del JDK. Los controladores de proxy pertenecen a Netty, y la fábrica y la enumeración de extensión a org.apache.qpid.jms.

Para un broker accesible públicamente en una ruta de proxy pública permitida, la lista de proxies SOCKS5 ofrece candidatos de host y puerto; confirme que el nodo elegido permite el host y el puerto reales del broker. La extensión devuelve un proveedor; cada llamada al proveedor crea un controlador nuevo. Devolver un único controlador mutable capturado para varias conexiones incumpliría esa disposición de propiedad.

Para la autenticación SOCKS5, use la sobrecarga del controlador que acepta nombre de usuario y contraseña. Mantenga las credenciales del broker en la conexión JMS y conserve el URI real del broker AMQPS y el nombre TLS.

La extensión admite los controladores de proxy HTTP, SOCKS4 y SOCKS5 de Netty. Para HTTP CONNECT, el intermediario debe permitir el puerto de destino del broker.

Artículos relacionados