目前,我无法通过代理服务器向 Internet 发送 ActiveMQ
消息。
我的网络架构:
JMS Sender ---- |Proxy| --- JMS server (xx.xx.xx.xx) [on Internet]
我搜索了 ActiveMQ 的文档但一无所获,ActiveMQ API 也是如此。 http://activemq.apache.org/tcp-transport-reference.html
Is it possible to send JMS message over proxy? Any solution for this problem?
我的代码在 LAN 上运行良好,但是当通过代理发送时,它会引发错误:
代码:
public void createConnection() throws JMSException {
String jmsURL = "tcp://xx.xx.xx.xx:61616";
TopicConnectionFactory factory
= (TopicConnectionFactory) new ActiveMQConnectionFactory(jmsURL);
TopicConnection connection = factory.createTopicConnection(); //Error here
TopicSession session = connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic(topicName);
TopicPublisher publisher = session.createPublisher(topic);
publisher.setPriority(PRIORITY);
publisher.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
}
错误:
Exception in thread "main" javax.jms.JMSException:
Could not connect to broker URL: tcp://xx.xx.xx.xx:61616. Reason: java.net.ConnectException: Connection timed out: connect
at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:36)
at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:360)
at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:305)
at org.apache.activemq.ActiveMQConnectionFactory.createTopicConnection(ActiveMQConnectionFactory.java:279)
at JMSSender.createConnection(JMSSender.java:55)
at MainClass.main(MainClass.java:142)
Caused by: java.net.ConnectException: Connection timed out: connect
最佳答案
问题可能出在代理本身上。如果您的代理不允许您的协议(protocol)和/或您的目的地,它将阻止您的所有请求。
尝试使用 HTTP(或 HTTPS)协议(protocol)而不是 TCP,因为代理通常允许这种请求。
因此,向您的代理添加一个 HTTP 传输连接器,然后从您的客户端使用 HTTP 再次尝试:
<transportConnectors>
<transportConnector name="tcp" uri="tcp://xx.xx.xx.xx:61616?trace=true"/>
<transportConnector name="http" uri="http://xx.xx.xx.xx:8080?trace=true" />
</transportConnectors>
另一方面,您也可以尝试 REST API发布/消费消息。
关于java - 如何通过代理从 ActiveMQ 发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36302121/