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.

Gerelateerde artikelen