Artemis SOCKS 代理支持
Artemis SOCKS Proxy Support
SOCKS proxy support was released in 2.12.0. Here is the PR 的功能。但是,我无法使用以下方法设置 Artemis SOCKS 代理:
Map<String, Object> params = new HashMap<>();
params.put(TransportConstants.HOST_PROP_NAME, "localhost");
params.put(TransportConstants.PORT_PROP_NAME, "61617"); //<acceptor name="netty">tcp://0.0.0.0:61617</acceptor>
params.put(TransportConstants.PROXY_ENABLED_PROP_NAME, "true");
params.put(TransportConstants.PROXY_HOST_PROP_NAME, "localhost");
params.put(TransportConstants.PROXY_PORT_PROP_NAME, "1080");
params.put(TransportConstants.PROXY_USERNAME_PROP_NAME, "user");
params.put(TransportConstants.PROXY_PASSWORD_PROP_NAME, "WRONG_PASSWORD");
TransportConfiguration transportConfiguration = new TransportConfiguration("org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory", params);
ActiveMQConnectionFactory activeMQConnectionFactory = ActiveMQJMSClient.createConnectionFactoryWithoutHA(JMSFactoryType.CF, transportConfiguration);
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>artemis-jms-client</artifactId>
<version>2.14.0</version>
</dependency>
这将忽略代理配置。即使传递错误的代理配置,如不存在的主机、密码和用户名,消息也会成功发送到代理。这不会失败。那些 PROXY_*
属性似乎没有被加载。
我是不是做错了什么?
如果您使用的是 localhost
,则代理设置将被忽略。请参阅 the code 以供参考。因此,您应该在配置代理支持时使用 non-loopback IP 或主机名。
此外,请注意,您可以使用 URL 而不是 TransportConfiguration
,例如:
ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory("tcp://non_loopback_ip:61617?socksEnabled=true;socksHost=localhost;socksPort=1080;socksUsername=user;socksPassword=WRONG_PASSWORD");
SOCKS proxy support was released in 2.12.0. Here is the PR 的功能。但是,我无法使用以下方法设置 Artemis SOCKS 代理:
Map<String, Object> params = new HashMap<>();
params.put(TransportConstants.HOST_PROP_NAME, "localhost");
params.put(TransportConstants.PORT_PROP_NAME, "61617"); //<acceptor name="netty">tcp://0.0.0.0:61617</acceptor>
params.put(TransportConstants.PROXY_ENABLED_PROP_NAME, "true");
params.put(TransportConstants.PROXY_HOST_PROP_NAME, "localhost");
params.put(TransportConstants.PROXY_PORT_PROP_NAME, "1080");
params.put(TransportConstants.PROXY_USERNAME_PROP_NAME, "user");
params.put(TransportConstants.PROXY_PASSWORD_PROP_NAME, "WRONG_PASSWORD");
TransportConfiguration transportConfiguration = new TransportConfiguration("org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory", params);
ActiveMQConnectionFactory activeMQConnectionFactory = ActiveMQJMSClient.createConnectionFactoryWithoutHA(JMSFactoryType.CF, transportConfiguration);
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>artemis-jms-client</artifactId>
<version>2.14.0</version>
</dependency>
这将忽略代理配置。即使传递错误的代理配置,如不存在的主机、密码和用户名,消息也会成功发送到代理。这不会失败。那些 PROXY_*
属性似乎没有被加载。
我是不是做错了什么?
如果您使用的是 localhost
,则代理设置将被忽略。请参阅 the code 以供参考。因此,您应该在配置代理支持时使用 non-loopback IP 或主机名。
此外,请注意,您可以使用 URL 而不是 TransportConfiguration
,例如:
ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory("tcp://non_loopback_ip:61617?socksEnabled=true;socksHost=localhost;socksPort=1080;socksUsername=user;socksPassword=WRONG_PASSWORD");