static void appendMessages(Tpp tpp, Collection<MessageBatchWithRawData> batches) throws Exception { List<MessagePriority> msgs = new ArrayList<>(); for (MessageBatchWithRawData batch : batches) { List<PartialDecodedMessage> pdmsgs = batch.getMessages(); for (PartialDecodedMessage pdmsg : pdmsgs) { MessagePriority msg = new MessagePriority(); msg.setAttributes(pdmsg.readDurableProperties()); msg.setCreationDate(new Date(pdmsg.getBornTime())); msg.setPartition(tpp.getPartition()); msg.setPayload(pdmsg.readBody()); msg.setPriority(tpp.isPriority() ? 0 : 1); msg.setProducerId(0); msg.setProducerIp(""); msg.setRefKey(pdmsg.getKey()); msg.setTopic(tpp.getTopic()); msg.setCodecType(pdmsg.getBodyCodecType()); msgs.add(msg); } } long start = System.currentTimeMillis(); MessagePriority[] array = msgs.toArray(new MessagePriority[msgs.size()]); System.out.println("ToArray: " + (System.currentTimeMillis() - start)); start = System.currentTimeMillis(); PlexusComponentLocator.lookup(MessagePriorityDao.class).insert(array); System.out.println("Insert: " + (System.currentTimeMillis() - start)); }