【发布时间】:2015-06-18 05:21:25
【问题描述】:
我有一个 Spring 应用程序在独立的 JBoss EAP 6.2(带有嵌入式 HornetQ 提供程序)中运行。
消息已成功放入队列(我可以在 jboss-eap-6.2\standalone\data\messagingjournal\hornetq-data-1.hq 中看到它们,因为队列是持久的),但没有被监听器拾取(侦听器内的断点未命中)。我怀疑配置中缺少某些内容或错误,但看不到什么。 JBoss 启动时没有任何验证错误。
首先,摘自 Spring 的 applicationContext.xml:
连接工厂和队列的 JNDI 名称与 JBoss 的standalone-full.xml 中的名称匹配
<jee:jndi-lookup id="jmsConnectionFactory" jndi-name="java:/JmsXA" resource-ref="false" proxy-interface="javax.jms.ConnectionFactory"/>
<jee:jndi-lookup id="myQueue" jndi-name="java:jboss/exported/jms/queue/myQueue"/>
<bean id="myHandler" class="com.example.MyHandler" />
<jms:listener-container destination-type="queue" acknowledge="auto" connection-factory="jmsConnectionFactory">
<jms:listener destination="java:jboss/exported/jms/queue/myQueue" ref="myHandler" method="processMessage" />
</jms:listener-container>
消息处理程序被声明为 Spring 组件,并且类和方法名称与上面声明的匹配:
@Component
public class MyHandler {
public void processMessage(MyMessage delaySendTransfer) {
//...
}
【问题讨论】:
标签: java spring jboss jms hornetq