gpt4 book ai didi

java - Spring JMS 监听器未连接到 ActiveMQ

转载 作者:行者123 更新时间:2023-12-01 12:10:18 26 4
gpt4 key购买 nike

我想使用 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 的 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

最佳答案

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

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

Bruce Snider 在网络上的某个地方提到了这一点,作为对同一问题的回复。

关于java - Spring JMS 监听器未连接到 ActiveMQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27316225/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com