【发布时间】:2015-02-03 15:25:55
【问题描述】:
我想使用 Spring JMSListener 基础架构。所以我设置了一个 ActiveMQ 实例并尝试做一个简单的测试。这是我的弹簧配置:
<!-- 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 的 Web 控制台中发送消息,但没有客户端连接,没有传递的希望。感谢您的任何意见。
更新:我找到了一个堆栈跟踪...
[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
【问题讨论】:
标签: java spring jms activemq spring-jms