如何使用 SOCKS 代理或 java 中的任何其他代理通过 SSL 创建与 AMQP 队列的连接

How to create connection to AMQP queue over SSL using SOCKS proxy or any other proxy in java

使用 SOCKS 代理或任何其他代理,对于无法直接访问互联网或 amqps 连接端口被防火墙阻止的环境,是否有任何方法可以使用 org.apache.qpid.jms.JmsConnectionFactory 通过 SSL 连接到 amqp 队列。

我已经尝试在互联网 available.It 工作正常的环境中使用 org.apache.qpid.jms.JmsConnectionFactory 通过 SSL 连接到 amqp 队列!!!

使用最新版本的 Qpid JMS 客户端(截至此答案为 0.47.0),您可以创建自己的 Netty ProxyHandler 实例,该实例控制客户端如何通过代理连接并在连接扩展上配置它,如中所述此功能的代码 here: the Factory exposes this via the setter for connection extensions. The test case 显示了一些用法。

Supplier<ProxyHandler> proxyHandlerSupplier = () -> {
    return new Socks5ProxyHandler(new InetSocketAddress("localhost", getPort()));
};

JmsConnectionFactory factory = new JmsConnectionFactory(remoteURI);
    factory.setExtension(JmsConnectionExtensions.PROXY_HANDLER_SUPPLIER.toString(), (connection, remote) -> {
        return proxyHandlerSupplier;
    });