Para unha conexión AMQP bloqueante e non TLS, o RabbitConnectionFactoryBean de Spring pode pasar unha fábrica de sockets con recoñecemento de SOCKS ao cliente Java de RabbitMQ.

Se Commons Net xa está dispoñible, configure o bean de fábrica existente antes da inicialización:

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 aplicación. Conserve o seu host de broker, porto AMQP, conta e a configuración de xestión de conexións de Spring. O broker segue sendo o destino; a SocketFactory crea os sockets que o alcanzan a través de SOCKS. Para unha proba non sensible contra un broker público onde se permiten intermediarios públicos, a lista de proxies SOCKS ofrece candidatos; axeite a versión de SOCKS que admite o contorno de execución e confirme o acceso ao host e porto reais do broker.

A fábrica de Commons Net crea un java.net.Socket non conectado usando o Proxy subministrado. Logo, o código de conexión bloqueante de RabbitMQ conecta ese socket pola súa ruta de conexión habitual. Exportar só HTTP_PROXY non fornece esta fábrica de sockets AMQP.

RabbitMQ documenta que o gancho SocketFactory se aplica á E/S bloqueante. Un cliente configurado para NIO ou outro transporte necesita o gancho compatible dese transporte. Para AMQPS, conserve unha fábrica de sockets TLS axeitada e a verificación do destino; substituíla pola fábrica simple anterior non é unha configuración TLS completa.

Artigos relacionados