Настройка прокси SOCKS5 для Qpid JMS с обработчиками Netty
Подключите поставщик ProxyHandler SOCKS5 через расширения соединения Qpid JMS, сохранив URI брокера AMQPS.
Транспорт Netty в Qpid JMS может получить новый обработчик прокси через расширение соединения:
Supplier<ProxyHandler> handlers = () ->
new Socks5ProxyHandler(
new InetSocketAddress("proxy.example", 1080));
JmsConnectionFactory factory = new JmsConnectionFactory(
"amqps://broker.example:5671");
factory.setExtension(
JmsConnectionExtensions.PROXY_HANDLER_SUPPLIER.toString(),
(connection, remote) -> handlers);Supplier и InetSocketAddress — это типы JDK. Обработчики прокси принадлежат Netty, а фабрика и перечисление расширения — org.apache.qpid.jms.
Для брокера, доступного публично по разрешённому публичному маршруту прокси, список прокси SOCKS5 предлагает кандидатов по хосту и порту; убедитесь, что выбранный узел разрешает фактические хост и порт брокера. Расширение возвращает поставщика; каждый вызов поставщика создаёт новый обработчик. Возврат одного захваченного изменяемого обработчика для нескольких соединений нарушил бы это правило владения.
Для аутентификации SOCKS5 используйте перегрузку обработчика, принимающую имя пользователя и пароль. Храните учётные данные брокера в соединении JMS и сохраняйте реальный URI брокера AMQPS и имя TLS.
Расширение поддерживает обработчики прокси HTTP, SOCKS4 и SOCKS5 в Netty. Для HTTP CONNECT посредник должен разрешать целевой порт брокера.