SOCKS för blockerande icke-TLS RabbitMQ-anslutningar i Spring AMQP
Koppla en proxy-medveten SocketFactory via RabbitConnectionFactoryBean för den blockerande icke-TLS AMQP-anslutningsvägen.
För en blockerande, icke-TLS AMQP-anslutning kan Springs RabbitConnectionFactoryBean skicka en SOCKS-medveten socketfabrik till RabbitMQ Java-klienten.
Om Commons Net redan är tillgängligt, konfigurera den befintliga factory beanen före initiering:
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 är applikationens RabbitConnectionFactoryBean. Behåll dess broker-värd, AMQP-port, konto och Springs inställning för anslutningshantering. Brokern förblir destinationen; SocketFactory skapar de sockets som når den via SOCKS. För ett icke-känsligt test mot en offentlig broker där offentliga mellanhänder är tillåtna erbjuder SOCKS-proxylistan kandidater; matcha den SOCKS-version som runtime stöder och bekräfta åtkomst till den faktiska broker-värden och -porten.
Commons Nets fabrik skapar en oförbunden java.net.Socket med den angivna Proxy. RabbitMQs blockerande anslutningskod ansluter sedan den socketen via sin normala anslutningsväg. Att bara exportera HTTP_PROXY tillhandahåller inte denna AMQP-socketfabrik.
RabbitMQ dokumenterar att SocketFactory-kroken gäller för blockerande I/O. En klient som konfigurerats för NIO eller en annan transport behöver den krok som den transporten stöder. För AMQPS, behåll en lämplig TLS-socketfabrik och verifiering av destinationen; att ersätta den med den enkla fabriken ovan är inte en fullständig TLS-konfiguration.