Транспорт 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 посредник должен разрешать целевой порт брокера.

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