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.

Powiązane artykuły