我正在从队列中使用Tibco JMS(EMS)消息...我想在每次运行应用程序时清除队列。我可以想到以下逻辑...我认为他们可能是更好的方法
public void clearMessages() throws JMSException{
Message msg = (Message) queueReceiver.receiveNoWait();
while(msg != null)
{
clearMessages();
}
return;
}
最佳答案
选项1:您分别确认每条消息;但是,如果您有(许多)数千条消息入队,则此方法可能需要一些时间:
public void clearMessages() throws JMSException{
Message message = null;
do {
message = consumer.receiveNoWait();
if (message != null) message.acknowledge();
}
while (message != null);
}
选项2:使用TibjmsAdmin对象清除JMS目标的操作是这样的(对于JavaDoc单击TIBCO EMS Admin Java API ):
public void clearMessages(String queueName) throws TibjmsAdminException, TibjmsAdminInvalidNameException{
TibjmsAdmin jmsAdmin = new TibjmsAdmin("tcp://localhost:7222", "admin", "admin");
jmsAdmin.purgeQueue(queueName);
// alternatively purge all queues:
// jmsAdmin.purgeQueues(">");
}
HTH,
亨德里克