У меня есть код Spring Batch, который считывает (удаляет из очереди) данные из Oracle AQ.
Но для чтения только 100 строк требуется 4 минуты !!
В чем может быть проблема с этим ридером?¿Как я могу улучшить производительность?
Это код из моего специального ридера, который удаляет данные из очереди:
final String queueOwner = "OWNER";
final String queueName = "QUE_NAME";
try (Connection aqconn = dataSource.getConnection()) {
aqconn.setAutoCommit(false);
Class.forName("oracle.AQ.AQOracleDriver");
AQSession aqSession = AQDriverManager.createAQSession(aqconn);
AQQueue queue;
AQMessage message = null;
AQDequeueOption deqOption = new AQDequeueOption();
AQObjectPayload payload;
Data data= new Data();
queue = aqSession.getQueue(queueOwner, queueName);
message = ((AQOracleQueue) queue).dequeue(deqOption, DataAq.getORADataFactory());
payload = message.getObjectPayload();
DataAq dataAq= (DataAq) payload.getPayloadData();
--Some validation
aqconn.commit();
aqSession.close();
return saldo;
}
Я уже пробовал использовать JmsItemReader, но он всегда давал мнеэта ошибка «Фабрика полезной нагрузки должна быть указана для адресатов с полезной нагрузкой ADT», даже если я установил прослушиватель сообщений, поэтому я отказался от этой конфигурации.