O transporte Netty do Qpid JMS pode obter um novo handler de proxy por meio de uma extensão de conexão:

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 são tipos do JDK. Os handlers de proxy pertencem ao Netty, e a fábrica e a enumeração de extensão ao org.apache.qpid.jms.

Para um broker acessível publicamente em uma rota de proxy pública permitida, a lista de proxies SOCKS5 oferece candidatos de host e porta; confirme que o nó escolhido permite o host e a porta reais do broker. A extensão retorna um fornecedor; cada chamada ao fornecedor cria um novo handler. Retornar um único handler mutável capturado para várias conexões violaria essa disposição de propriedade.

Para autenticação SOCKS5, use a sobrecarga do handler que aceita nome de usuário e senha. Mantenha as credenciais do broker na conexão JMS e conserve o URI real do broker AMQPS e o nome TLS.

A extensão suporta os handlers de proxy HTTP, SOCKS4 e SOCKS5 do Netty. Para HTTP CONNECT, o intermediário deve permitir a porta de destino do broker.

Artigos relacionados