8

我需要通过 HTTP/HTTPS 代理将 ActiveMQ-Listener 连接到防火墙外的代理。我到处搜索,但没有找到如何为 AcitveMQ-Client 设置代理设置的解决方案。

ActiveMQ 正在使用 Apache HttpClient,但我不知道如何在 ActiveMQ 中操作该客户端的创建。HttpClient 不使用 htttps.proxyHost 和 https.proxyPort。

有没有办法为 HttpClient 的所有实例设置全局 http/https 代理?

4

2 回答 2

5

ActiveMQ HttpClientTransport包含以下可用于指定代理主机和端口的方法:

public void setProxyHost(String proxyHost)
public void setProxyPort(int proxyPort)

对于 5.6+ 版本,您还可以提供代理用户名和密码:

public void setProxyUser(String proxyUser)
public void setProxyPassword(String proxyPassword)

要配置 JmsInvokerProxyFactoryBean:

<bean id="jmsClientFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL">
      <value>http://myendpoint.somewhere.com:5186?proxyUser=fred&amp;proxyPassword=ahoy&amp;proxyHost=myproxyhost.somewhere.com&amp;proxyPort=8081</value>
    </property>
</bean>


<bean id="remotingService"
        class="org.springframework.jms.remoting.JmsInvokerProxyFactoryBean">
      <property name="serviceInterface" value="com.foo.CheckingAccountService"/>
      <property name="connectionFactory" ref="jmsClientFactory"/>
      <property name="queue" ref="queue"/>
   </bean>
于 2013-01-18T17:13:32.687 回答
0

如果您不使用 xml 配置,这是在 ActiveMQ 中启用 http 代理的方法:

  1. 将 activemq-http 库添加到类路径(https://mvnrepository.com/artifact/org.apache.activemq/activemq-http

  2. 添加proxyHostproxyPort作为 URI 参数并使用该 URI 创建连接工厂:

    URI brokerUri = new URI("http://host:port");
    Map<String, String> additionalParameters = new HashMap<>();
    additionalParameters.put("proxyHost", "localhost");
    additionalParameters.put("proxyPort", "8888");
    additionalParameters.put("proxyUser", "xxxx"); // optional
    additionalParameters.put("proxyPassword", "xxxx"); // optional
    brokerUri = org.apache.activemq.util.URISupport.applyParameters(brokerUri, additionalParameters);
    ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerUri);
    Connection connection = connectionFactory.createConnection();
    
于 2018-05-26T11:17:09.147 回答