[英]ActiveMQ http connection refused
I am trying to connect my java client application to ActiveMQ over http, but keep getting an error: 我正在尝试通过http将我的Java客户端应用程序连接到ActiveMQ,但始终出现错误:
Failed to perform GET on: http://localhost:8080 as response was: Connection refused: connect
This connections works why I connect with: tcp://localhost:61616 此连接有效,原因是我连接:tcp:// localhost:61616
activemq.xml activemq.xml
<broker>
...
<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="http" uri="http://0.0.0.0:8080"/>
</transportConnectors>
...
</broker>
jndi.properties in my Java Client program: 我的Java客户端程序中的jndi.properties:
java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory
#java.naming.provider.url = tcp://localhost:61616
java.naming.provider.url = http://localhost:8080
connectionFactoryNames = connectionFactory, queueConnectionFactory, topicConnectionFactry
queue.testQueue = testQueue
Java Client Java客户端
package be.jmshub.jmsremotejndiproducer;
import javax.jms.JMSException;
import javax.jms.Connection;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.Message;
import javax.jms.Queue;
import javax.jms.QueueConnectionFactory;
import javax.naming.Context;
import javax.naming.InitialContext;
public class Producer {
public static void main(String[] args) throws JMSException {
System.out.println("JMS REMOTE PRODUCER: start");
try {
// create a new intial context, which loads from jndi.properties file
Context ctx = new InitialContext();
QueueConnectionFactory factory = (QueueConnectionFactory) ctx.lookup("connectionFactory");
Connection connection = factory.createConnection();
Queue queue = (javax.jms.Queue) ctx.lookup("testQueue");
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
MessageProducer producer = session.createProducer(queue);
System.out.println("JMS REMOTE PRODUCER: connected");
int count = 0;
for (int i = 0; i < 5; i++) {
String messageText = "This is message " + (i + 1);
Message message = session.createTextMessage(messageText);
System.out.println("JMS REMOTE PRODUCER: sending - " + messageText);
producer.send(message);
count += 1;
}
System.out.println("JMS REMOTE PRODUCER: total messages sent: " + count);
// Clean up
session.close();
connection.close();
} catch (Exception ex) {
System.out.println("JMS REMOTE PRODUCER: EXCEPTION:" + ex.toString());
}
System.out.println("JMS REMOTE PRODUCER: finished");
}
}
This works with tcp://localhost:61616 but not with http://localhost:8080 这适用于tcp:// localhost:61616,但不适用于http:// localhost:8080
Can any person help me get this thing up and running? 有人可以帮助我启动并运行该产品吗?
Find below a stripped down example to start the broker. 在下面找到一个简化的示例以启动代理。 Your
Producer
runs without any problem. 您的
Producer
运行正常。
activemq.xml activemq.xml
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:amq="http://activemq.apache.org/schema/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
<broker xmlns="http://activemq.apache.org/schema/core" start="false">
<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:0?maximumConnections=1000"/>
<transportConnector name="http" uri="http://0.0.0.0:8080"/>
</transportConnectors>
</broker>
</beans>
Broker.java Broker.java
package be.jmshub.jmsremotejndiproducer;
import org.apache.activemq.broker.BrokerFactory;
import org.apache.activemq.broker.BrokerService;
public class Broker {
public static void main(String[] args) throws Exception {
BrokerService broker = BrokerFactory.createBroker("xbean:foo.xml");
broker.setPersistent(false);
broker.start();
broker.waitUntilStarted();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.