Jms Spring DefaultMessageListenerContainer-侦听器未读取Websphere MQ上的消息

Jms Spring DefaultMessageListenerContainer-侦听器未读取Websphere MQ上的消息,jms,listener,spring-jms,Jms,Listener,Spring Jms,我正在使用Spring3.0-DefaultMessageListenerContainer连接到WebSphere6MQ。MQ上已存在一些消息。当我运行测试时,将启动实现SessionAwareMessageListener的侦听器。但是不会调用onMessage()。所以问题是队列中已经存在的消息没有被读取 根据文档,autoStartup默认为true(我没有更改)。根据我的underatanding,在启动时,侦听器应该读取任何现有消息的队列,并且应该调用onMessage()。如果这种

我正在使用Spring3.0-DefaultMessageListenerContainer连接到WebSphere6MQ。MQ上已存在一些消息。当我运行测试时,将启动实现SessionAwareMessageListener的侦听器。但是不会调用onMessage()。所以问题是队列中已经存在的消息没有被读取

根据文档,autoStartup默认为true(我没有更改)。根据我的underatanding,在启动时,侦听器应该读取任何现有消息的队列,并且应该调用onMessage()。如果这种理解是错误的,请告诉我

以下是配置文件中的代码段:


${queue}
注意:没有错误/异常,测试应用程序启动正常

任何解决这一问题的建议都将大有裨益

谢谢,

RJ

问题已经解决。测试类在侦听器获得消息后,但在它可以将消息显示为输出之前终止。因此,第一条消息(最高优先级的消息)从队列中丢失

后来,由于我包含了一个事务管理器,侦听器将消息放回队列(显示一条警告,表示拒绝接收到的消息,因为侦听器容器在此期间已停止)。由于这是一个警告,并且我的记录器处于调试级别,所以我之前错过了这个

在测试类中放置thread.sleep可确保其运行时间更长,并且侦听器可以按优先级顺序读取队列中的所有消息:)

干杯,

RJ

这实际上不是一个答案,但我不想为同一个问题创建新的问题

我初始化了Spring上下文

ctx=newclasspathXmlApplicationContext(“classpath:+args[0]);
读取配置,然后调用(因为reasource未关闭的警告):

ctx.stop();
我没有意识到它会停止我的bean,经过一天的调试,我在日志中发现了这条消息

DEBUG o.s.c.s.DefaultLifecycleProcessor-要求[class org.springframework.jms.listener.DefaultMessageListenerContainer]类型的bean'messageListenerContainer'停止