ActiveMQ HTTP代理

8
我需要通过HTTP/HTTPS代理将ActiveMQ-Listener连接到防火墙外的代理服务器。我已经搜索了很多地方,但是没有找到如何设置AcitveMQ-Client的代理设置的解决方案。
ActiveMQ使用Apache HttpClient,但我不知道如何在ActiveMQ中操纵此客户端的创建。使用htttps.proxyHost和https.proxyPort并不能被HttpClient所使用。
是否有一种方法可以为所有HttpClient实例设置全局http/https代理?
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>

你好,我正在使用ActiveMQConnectionFactory通过JmsTemplate创建一个连接。我需要连接到位于代理服务器背后的ActiveMQ。请问您如何设置代理详细信息到activemqConection中呢?我们使用TCP传输连接与activemq进行通信。提前感谢您的帮助。 - Narendra Reddy
1
我认为TCP传输不支持代理。有一个开放的问题需要支持此功能:https://issues.apache.org/jira/plugins/servlet/mobile#issue/AMQ-2678 - Nicholas
你好,有没有办法使用HTTP传输方式通过代理连接?在你的帖子中提到了可以使用HttpClientTrasport。但我不确定如何将HttpClientTrasport设置为ActiveMqConnection对象。请告诉我我们该如何做。 - Narendra Reddy
@Nicholas,请问有没有通过代理使用HTTP传输的方式连接的方法?在你之前提到的帖子中,我们可以使用HttpClientTransport。但我不确定如何将HttpClientTransport设置为ActiveMqConnection对象。请让我知道你的想法。谢谢。 - Narendra Reddy
@Narendra:你应该开一个新的问题。 - Nicholas
显示剩余2条评论

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"); // 可选
    additionalParameters.put("proxyPassword", "xxxx"); // 可选
    brokerUri = org.apache.activemq.util.URISupport.applyParameters(brokerUri, additionalParameters);
    ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerUri);
    Connection connection = connectionFactory.createConnection();
    

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接