SOCKS для блокуючих non-TLS з'єднань RabbitMQ у Spring AMQP
Підключіть SocketFactory з підтримкою проксі через RabbitConnectionFactoryBean для шляху блокуючого non-TLS AMQP-з'єднання.
Для блокуючого 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.