Для блокирующего 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.

Похожие статьи