SOCKS para conexiones RabbitMQ bloqueantes no TLS en Spring AMQP
Conecte una SocketFactory con reconocimiento de proxy mediante RabbitConnectionFactoryBean para la ruta de conexión AMQP bloqueante no TLS.
Para una conexión AMQP bloqueante y no TLS, el RabbitConnectionFactoryBean de Spring puede pasar una fábrica de sockets con reconocimiento de SOCKS al cliente Java de RabbitMQ.
Si Commons Net ya está disponible, configure el bean de fábrica existente antes de la 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 es el RabbitConnectionFactoryBean de la aplicación. Conserve su host de broker, puerto AMQP, cuenta y la configuración de gestión de conexiones de Spring. El broker sigue siendo el destino; la SocketFactory crea los sockets que lo alcanzan a través de SOCKS. Para una prueba no sensible contra un broker público donde se permiten intermediarios públicos, la lista de proxies SOCKS ofrece candidatos; iguale la versión de SOCKS que admite el entorno de ejecución y confirme el acceso al host y puerto reales del broker.
La fábrica de Commons Net crea un java.net.Socket no conectado usando el Proxy proporcionado. Luego, el código de conexión bloqueante de RabbitMQ conecta ese socket mediante su ruta de conexión normal. Exportar únicamente HTTP_PROXY no proporciona esta fábrica de sockets AMQP.
RabbitMQ documenta que el enganche SocketFactory se aplica a la E/S bloqueante. Un cliente configurado para NIO u otro transporte necesita el enganche compatible de ese transporte. Para AMQPS, conserve una fábrica de sockets TLS adecuada y la verificación del destino; sustituirla por la fábrica simple anterior no es una configuración TLS completa.