protected List<MuleMessage> getFirstMessages() throws Exception
{
// The queue from which to pull events
QueueSession qs = connector.getTransactionalResource(endpoint);
Queue queue = qs.getQueue(endpoint.getEndpointURI().getAddress());
// The list of retrieved messages that will be returned
List<MuleMessage> messages = new LinkedList<MuleMessage>();
int batchSize = getBatchSize(queue.size());
// try to get the first event off the queue
MuleEvent message = (MuleEvent) queue.poll(connector.getQueueTimeout());
if (message != null)
{
// keep first dequeued event
((DefaultMuleMessage)message.getMessage()).setMuleContext(endpoint.getMuleContext());
messages.add(message.getMessage());
// keep batching if more events are available
for (int i = 0; i < batchSize && message != null; i++)
{
message = (MuleEvent)queue.poll(0);
if (message != null)
{
messages.add(new DefaultMuleMessage(message.getMessage(), endpoint.getMuleContext()));
}
}