Я могу программно перечислить сообщения в очереди, используя следующий код:
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 как потребитель сообщений, который обрабатывает сообщение синхронно. Тем не менее, я хочу получить список сообщений из очереди, чтобы пользователь мог удалить его, если пожелает. Выше код возвращает нулевой список, если у меня есть получатель очереди.