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.