SOCKS voor blokkerende niet-TLS RabbitMQ-verbindingen in Spring AMQP
Koppel een proxybewuste SocketFactory via RabbitConnectionFactoryBean voor het blokkerende niet-TLS AMQP-verbindingspad.
Voor een blokkerende, niet-TLS AMQP-verbinding kan de RabbitConnectionFactoryBean van Spring een SOCKS-bewuste socketfabriek doorgeven aan de RabbitMQ Java-client.
Als Commons Net al beschikbaar is, configureer dan de bestaande factory bean vóór initialisatie:
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 is de RabbitConnectionFactoryBean van de applicatie. Behoud de brokerhost, AMQP-poort, account en de instelling voor verbindingsbeheer van Spring. De broker blijft de bestemming; de SocketFactory maakt de sockets die hem via SOCKS bereiken. Voor een niet-gevoelige test tegen een openbare broker waar openbare tussenpartijen zijn toegestaan, biedt de SOCKS-proxylijst kandidaten; stem af op de SOCKS-versie die de runtime ondersteunt en bevestig toegang tot de werkelijke brokerhost en -poort.
De fabriek van Commons Net maakt een niet-verbonden java.net.Socket met de opgegeven Proxy. De blokkerende verbindingscode van RabbitMQ verbindt die socket vervolgens via het normale verbindingspad. Alleen HTTP_PROXY exporteren levert deze AMQP-socketfabriek niet.
RabbitMQ documenteert dat de SocketFactory-hook geldt voor blokkerende I/O. Een client die is geconfigureerd voor NIO of een ander transport heeft de door dat transport ondersteunde hook nodig. Behoud voor AMQPS een geschikte TLS-socketfabriek en verificatie van de bestemming; het vervangen door de eenvoudige fabriek hierboven is geen volledige TLS-configuratie.