Configurar um proxy SOCKS5 para Qpid JMS com handlers Netty
Anexe um fornecedor ProxyHandler SOCKS5 por meio das extensões de conexão do Qpid JMS, preservando o URI do broker AMQPS.
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.