return answer;
}
protected synchronized ActiveMQMessage[] getMessagesWithPrefetch() throws JMSException {
List tmpList = new ArrayList();
QueueListEntry entry = messagePtrs.getFirstEntry();
int count = 0;
int maxNumberToDispatch = prefetchLimit - unconsumedMessagesDispatched.get();
while (entry != null && count < maxNumberToDispatch) {
MessagePointer pointer = (MessagePointer) entry.getElement();
if (!pointer.isDispatched()) {
ActiveMQMessage msg = pointer.getContainer().getMessage(pointer.getMessageIdentity());
if (msg != null) {
if (pointer.isDispatched() || pointer.isRedelivered()) {
//already dispatched - so mark as redelivered
msg.setJMSRedelivered(true);
}
pointer.setDispatched(true);
tmpList.add(msg);
unconsumedMessagesDispatched.increment();
count++;
}
else {
//the message is probably expired
log.info("Message probably expired: " + msg);
QueueListEntry discarded = entry;
entry = messagePtrs.getPrevEntry(discarded);
messagePtrs.remove(discarded);
}
}
entry = messagePtrs.getNextEntry(entry);