SOCKS dla blokujących połączeń RabbitMQ innych niż TLS w Spring AMQP
Podłącz fabrykę SocketFactory świadomą proxy przez RabbitConnectionFactoryBean dla ścieżki blokującego połączenia AMQP bez TLS.
Dla blokującego połączenia AMQP bez TLS RabbitConnectionFactoryBean Springa może przekazać fabrykę gniazd świadomą SOCKS klientowi Java RabbitMQ.
Jeśli Commons Net jest już dostępny, skonfiguruj istniejący factory bean przed inicjalizacją:
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 to RabbitConnectionFactoryBean aplikacji. Zachowaj jego host brokera, port AMQP, konto i konfigurację zarządzania połączeniami Spring. Broker pozostaje miejscem docelowym; SocketFactory tworzy gniazda, które docierają do niego przez SOCKS. Do testu nieuczulonego na publicznym brokerze, gdzie dozwolone są publiczne pośredniki, lista proxy SOCKS oferuje kandydatów; dopasuj wersję SOCKS obsługiwaną przez środowisko uruchomieniowe i potwierdź dostęp do rzeczywistego hosta i portu brokera.
Fabryka Commons Net tworzy niepodłączony java.net.Socket przy użyciu podanego Proxy. Następnie blokujący kod połączenia RabbitMQ łączy to gniazdo swoją zwykłą ścieżką połączenia. Samo wyeksportowanie HTTP_PROXY nie zapewnia tej fabryki gniazd AMQP.
RabbitMQ dokumentuje, że hook SocketFactory dotyczy blokującego wejścia/wyjścia. Klient skonfigurowany dla NIO lub innego transportu potrzebuje hooka obsługiwanego przez ten transport. W przypadku AMQPS zachowaj odpowiednią fabrykę gniazd TLS i weryfikację miejsca docelowego; zastąpienie jej powyższą prostą fabryką nie jest pełną konfiguracją TLS.