【问题标题】:How to create connection to AMQP queue over SSL using SOCKS proxy or any other proxy in java如何使用 SOCKS 代理或 java 中的任何其他代理通过 SSL 创建到 AMQP 队列的连接
【发布时间】:2019-11-11 14:42:12
【问题描述】:
使用 SOCKS 代理或任何其他代理,对于无法直接访问 Internet 或 amqps 连接端口被防火墙阻止的环境,是否有任何方法可以使用 org.apache.qpid.jms.JmsConnectionFactory 通过 SSL 连接到 amqp 队列.
我已经尝试在可以使用互联网的环境中使用 org.apache.qpid.jms.JmsConnectionFactory 通过 SSL 连接到 amqp 队列。它工作正常!!!
【问题讨论】:
标签:
java
spring-boot
amqp
socks
qpid
【解决方案1】:
使用最新版本的 Qpid JMS 客户端(截至本答案为 0.47.0),您可以创建自己的 Netty ProxyHandler 实例,该实例控制客户端如何通过代理进行连接,并在代码中记录的连接扩展上对其进行配置here:工厂通过setter 公开此连接扩展。此功能的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;
});