SOCKS til blokerende ikke-TLS RabbitMQ-forbindelser i Spring AMQP
Tilslut en proxybevidst SocketFactory via RabbitConnectionFactoryBean til den blokerende ikke-TLS AMQP-forbindelsesvej.
For en blokerende, ikke-TLS AMQP-forbindelse kan Springs RabbitConnectionFactoryBean sende en SOCKS-bevidst socketfabrik videre til RabbitMQ Java-klienten.
Hvis Commons Net allerede er tilgængelig, skal du konfigurere den eksisterende factory bean før initialisering:
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 er applikationens RabbitConnectionFactoryBean. Behold dens broker-vært, AMQP-port, konto og Springs opsætning til forbindelsesstyring. Brokeren forbliver destinationen; SocketFactory opretter de sockets, der når den gennem SOCKS. Til en ikke-følsom test mod en offentlig broker, hvor offentlige mellemled er tilladt, tilbyder SOCKS-proxylisten kandidater; match den SOCKS-version, runtime understøtter, og bekræft adgang til den faktiske broker-vært og -port.
Commons Nets fabrik opretter en uforbundet java.net.Socket ved hjælp af den angivne Proxy. RabbitMQs blokerende forbindelseskode forbinder derefter den socket via sin normale forbindelsesvej. Blot at eksportere HTTP_PROXY giver ikke denne AMQP-socketfabrik.
RabbitMQ dokumenterer, at SocketFactory-krogen gælder for blokerende I/O. En klient konfigureret til NIO eller en anden transport har brug for den pågældende transports understøttede krog. Til AMQPS skal du beholde en passende TLS-socketfabrik og destinationsverifikation; at erstatte den med den almindelige fabrik ovenfor er ikke en fuld TLS-konfiguration.