SOCKS para conexões RabbitMQ não TLS bloqueantes no Spring AMQP
Anexe uma SocketFactory ciente de proxy pelo RabbitConnectionFactoryBean para o caminho de conexão AMQP não TLS bloqueante.
Para uma conexão AMQP bloqueante e não TLS, o RabbitConnectionFactoryBean do Spring pode passar uma fábrica de sockets ciente de SOCKS ao cliente Java do RabbitMQ.
Se o Commons Net já estiver disponível, configure o bean de fábrica existente antes da inicialização:
var socksProxy = new java.net.Proxy(
java.net.Proxy.Type.SOCKS,
new java.net.InetSocketAddress("proxy.example", 1080));
rabbitFactoryBean.setSocketFactory(
new org.apache.commons.net.DefaultSocketFactory(socksProxy));
rabbitFactoryBean é o RabbitConnectionFactoryBean da aplicação. Mantenha seu host de broker, porta AMQP, conta e a configuração de gerenciamento de conexões do Spring. O broker continua sendo o destino; a SocketFactory cria os sockets que o alcançam via SOCKS. Para um teste não sensível contra um broker público onde intermediários públicos são permitidos, a lista de proxies SOCKS oferece candidatos; alinhe a versão de SOCKS suportada pelo runtime e confirme o acesso ao host e à porta reais do broker.
A fábrica do Commons Net cria um java.net.Socket não conectado usando o Proxy fornecido. O código de conexão bloqueante do RabbitMQ então conecta esse socket pelo seu caminho de conexão normal. Apenas exportar HTTP_PROXY não fornece esta fábrica de sockets AMQP.
O RabbitMQ documenta que o gancho SocketFactory se aplica a E/S bloqueante. Um cliente configurado para NIO ou outro transporte precisa do gancho suportado por esse transporte. Para AMQPS, mantenha uma fábrica de sockets TLS adequada e a verificação do destino; substituí-la pela fábrica simples acima não é uma configuração TLS completa.