我有一个spring3 web应用程序。我使用org.springframework.jms.listener.DefaultMessageListenerContainer来配置我的消息监听器。我已经注册了一个MDPOJO。我想要的是,当onMessage()为特定请求执行时,其他人应该等到第一个请求完成。换句话说,onMessage()方法调用更多的工作流程,并且需要时间来完成它。其他消息在确认之前的请求已完成之前,onMessage不应选择队列中的队列。
是否可以同步处理onMessage()。我需要执行以下操作:
答案 0 :(得分:0)
我可以使用以下代码以编程方式列出队列中的消息:
public void listAllJMS_Messages()
{
try {
ObjectName objectName=new ObjectName("jboss.messaging.destination:name=DLQ,service=Queue");
List ls = (List) server.invoke(objectName, "listAllMessages" , null, null);
List<javax.jms.Message> messages=(List<javax.jms.Message>)server.invoke(objectName, "listAllMessages" , null, null);
int count=0;
for(javax.jms.Message msg : messages) {
System.out.println((++count)+"t"+msg.getJMSMessageID());
if(msg.getJMSType() != null && msg.getJMSType().equalsIgnoreCase("Text")) {
TextMessage text = (TextMessage)msg;
System.out.println(text.getText());
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// System.out.println((++count)+"t"+msg.getText());
}
但是上面的代码列出了那些目前没有任何消费者的队列消息。我的情况是我有一个MDPOJO作为消息使用者同步处理消息。我仍然需要来自队列的列表消息,以便用户可以根据需要删除它。如果我有队列的消费者,则代码返回空列表。