我想使用Spring JMSListener基础设施。因此,我设置了一个ActiveMQ实例,并尝试执行一个简单的测试。这里是我的spring配置:
<!-- ActiveMQ Configuration -->
<jms:annotation-driven/>
<!-- JMS ConnectionFactory to use, configuring the embedded broker using XML -->
<bean id="jmsConnectionFactory" class="org.apache.activemq.spring.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://xxxx.xxxx.net:8161" />
</bean>
<bean id="jmsListenerContainerFactory"
class="org.springframework.jms.config.DefaultJmsListenerContainerFactory">
<property name="connectionFactory" ref="jmsConnectionFactory"/>
<property name="concurrency" value="3-10"/>
</bean>当然,我有这样一门简单的课:
@Component
public class MessageListenerExample {
@JmsListener(destination = "TestQueue")
public void doSomething(String message) {
System.out.println("OnMessage Received :" + message);
}
}现在当我启动基于spring的应用程序时。我在调试器中看到,我的侦听器方法得到了注册,但不知怎么的,Spring没有连接到ActiveMQ队列,我可以通过查看activeMQ web控制台轻松地看到它。此外,我没有看到任何来自spring的日志记录输出,而JMS是这样做的。
我错过了什么吗?从这里走最好的路是什么?当然,我也测试过从ActiveMQ的网络控制台发送消息,但是w/o是一个客户端连接,没有希望交付。谢谢你的意见。
更新:我找到了一个堆栈..。
[WARN 14:02:58] DefaultMessageListenerContainer.handleListenerSetupFailure(860) | Setup of JMS message listener invoker failed for destination 'TestQueue' - trying to recover. Cause: The JMS connection has failed: Unknown data type: 47
org.apache.activemq.ConnectionFailedException: The JMS connection has failed: Unknown data type: 47
at org.apache.activemq.ActiveMQConnection.checkClosedOrFailed(ActiveMQConnection.java:1480)
at org.apache.activemq.ActiveMQConnection.createSession(ActiveMQConnection.java:324)
at org.springframework.jms.support.JmsAccessor.createSession(JmsAccessor.java:192)
at org.springframework.jms.listener.DefaultMessageListenerContainer.access$1400(DefaultMessageListenerContainer.java:122)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.initResourcesIfNecessary(DefaultMessageListenerContainer.java:1162)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1141)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1134)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1031)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.IOException: Unknown data type: 47
at org.apache.activemq.openwire.OpenWireFormat.doUnmarshal(OpenWireFormat.java:365)
at org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:285)
at org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:221)
at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:213)
at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196)
... 1 more发布于 2014-12-05 13:19:30
因为我看错了日志,我没有看到明显的。我之所以发布这篇文章,是因为这是许多人可能会遇到的事情。
我在spring配置中定义了错误的端口。我错误地使用了web控制台端口,但我当然希望使用TCP传输,它位于端口61616上。
布鲁斯·斯奈德( Bruce )在网上的某个地方提到了这一点,以回答同样的问题。
https://stackoverflow.com/questions/27316225
复制相似问题