【问题标题】:Spring JMS Listener doesnt connect to ActiveMQSpring JMS 侦听器未连接到 ActiveMQ
【发布时间】: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


    【解决方案1】:

    因为我查看了错误的日志,所以我没有看到明显的内容。我发布这个是因为这是很多人可能会遇到的问题。

    我在 spring 配置中定义了错误的端口。我错误地使用了 Web 控制台端口,但我当然想要 正在使用的位于端口 61616 上的 TCP 传输

    Bruce Snider 在网络某处提到了这一点,作为对相同问题的回复。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    • 2015-05-19
    • 2014-10-05
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    相关资源
    最近更新 更多