[英]Spring JMS with ActiveMQ
I am getting the following error when trying to post to my queue: 尝试发布到我的队列时出现以下错误:
Exception in thread "main" org.springframework.jms.UncategorizedJmsException: Uncategorized exception occured during JMS processing; nested exception is javax.jms.JMSException: Could not connect to broker URL: http://localhost:8161. Reason: java.io.IOException: Failed to perform GET on: http://localhost:8161 as response was: Not Found
at org.springframework.jms.support.JmsUtils.convertJmsAccessException(JmsUtils.java:316)
at org.springframework.jms.support.JmsAccessor.convertJmsAccessException(JmsAccessor.java:169)
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:496)
at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:568)
at org.springframework.jms.core.JmsTemplate.convertAndSend(JmsTemplate.java:657)
at org.springframework.jms.core.JmsTemplate.convertAndSend(JmsTemplate.java:648)
at com.spring.tutorials.amq.MessageSender.send(MessageSender.java:14)
at com.spring.tutorials.amq.Run.main(Run.java:24)
Caused by: javax.jms.JMSException: Could not connect to broker URL: http://localhost:8161. Reason: java.io.IOException: Failed to perform GET on: http://localhost:8161 as response was: Not Found
at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:36)
at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:358)
at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:303)
at org.apache.activemq.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:243)
at org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:180)
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:483)
... 5 more
Caused by: java.io.IOException: Failed to perform GET on: http://localhost:8161 as response was: Not Found
at org.apache.activemq.transport.http.HttpClientTransport.doStart(HttpClientTransport.java:279)
at org.apache.activemq.util.ServiceSupport.start(ServiceSupport.java:55)
at org.apache.activemq.transport.AbstractInactivityMonitor.start(AbstractInactivityMonitor.java:138)
at org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:58)
at org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:58)
at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:338)
... 9 more
I am able to access the admin screen without any issues when I enter the URL directly in the browser. 当我直接在浏览器中输入URL时,我可以毫无问题地访问管理界面。
Any ideas? 有任何想法吗?
Here is my configuration: 这是我的配置:
active-mq-context.xml 有源MQ-context.xml中
<!-- Connection Factory Definition -->
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="http://localhost:8161" />
</bean>
<!-- Destination Definition -->
<bean id="destination" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg value="MyTestQueue" />
</bean>
<!-- JMS Template Definition -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory" />
<property name="defaultDestination" ref="destination" />
</bean>
<!-- Message Sender Definition -->
<bean id="messageSender" class="com.spring.tutorials.amq.MessageSender">
<property name="jmsTemplate" ref="jmsTemplate" />
</bean>
MessageSender.java MessageSender.java
package com.spring.tutorials.amq;
import org.springframework.jms.core.JmsTemplate;
public class MessageSender {
private JmsTemplate jmsTemplate;
public void setJmsTemplate(JmsTemplate jmsTemplate) {
this.jmsTemplate = jmsTemplate;
}
public void send(final Object Object) {
jmsTemplate.convertAndSend(Object);
}
}
Run.java Run.java
package com.spring.tutorials.amq;
import java.util.HashMap;
import java.util.Map;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Run {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("active-mq-context.xml");
MessageSender messageSender = (MessageSender) context.getBean("messageSender");
Map<String,String> message = new HashMap<String,String>();
message.put("message1", "Hello");
message.put("message2", "World");
messageSender.send(message);
}
}
Thanks! 谢谢!
by default, ActiveMQ uses the TCP transport on port 61616, this is what the brokerURL should point to... 默认情况下,ActiveMQ在端口61616上使用TCP传输 ,这是brokerURL应指向的内容......
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://localhost:61616" />
</bean>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.