Для блокуючого non-TLS AMQP-з'єднання RabbitConnectionFactoryBean у Spring може передати фабрику сокетів із підтримкою SOCKS клієнту RabbitMQ Java.

Якщо Commons Net уже доступний, налаштуйте наявний bean фабрики перед ініціалізацією:

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 — це RabbitConnectionFactoryBean застосунку. Збережіть хост брокера, порт AMQP, обліковий запис і налаштування керування з'єднаннями Spring. Брокер залишається пунктом призначення; SocketFactory створює сокети, які досягають його через SOCKS. Для нечутливого тесту на публічному брокері, де дозволені публічні посередники, список SOCKS-проксі пропонує кандидатів; узгодьте версію SOCKS, яку підтримує середовище виконання, і підтвердьте доступ до фактичного хоста й порту брокера.

Фабрика Commons Net створює неза'єднаний java.net.Socket із наданим Proxy. Потім блокуючий код з'єднання RabbitMQ з'єднує цей сокет своїм звичайним шляхом з'єднання. Простий експорт HTTP_PROXY не надає цю фабрику сокетів AMQP.

RabbitMQ документує, що гачок SocketFactory застосовується до блокуючого вводу-виводу. Клієнту, налаштованому на NIO або інший транспорт, потрібен гачок, який підтримує цей транспорт. Для AMQPS збережіть відповідну фабрику TLS-сокетів і перевірку пункту призначення; заміна її простою фабрикою вище не є повним налаштуванням TLS.

Схожі статті