У меня есть приложение, которое запускается через несколько баз данных, и для каждой базы данных выполняется выбор запроса на всех таблицах и выгружает его в hasoop.Пул соединений jdbc с использованием ThreadpoolExecutor весной загрузки
Мой проект заключается в том, чтобы создать одно соединение с источником данных за раз и использовать пул соединений, полученный для запуска выборочных запросов в нескольких потоках. После этого для этого источника данных закройте соединение и создайте новый.
Вот код Асинхронного
@Component
public class MySampleService {
private final static Logger LOGGER = Logger
.getLogger(MySampleService.class);
@Async
public Future<String> callAsync(JdbcTemplate template, String query) throws InterruptedException {
try {
jdbcTemplate.query(query);
//process the results
return new AsyncResult<String>("success");
}
catch (Exception ex){
return new AsyncResult<String>("failed");
}
}
Здесь вызывающий
public String taskExecutor() throws InterruptedException, ExecutionException {
Future<String> asyncResult1 = mySampleService.callAsync(jdbcTemplate,query1);
Future<String> asyncResult2 = mySampleService.callAsync(jdbcTemplate,query2);
Future<String> asyncResult3 = mySampleService.callAsync(jdbcTemplate,query3);
Future<String> asyncResult4 = mySampleService.callAsync(jdbcTemplate,query4);
LOGGER.info(asyncResult1.get());
LOGGER.info(asyncResult2.get());
LOGGER.info(asyncResult3.get());
LOGGER.info(asyncResult4.get());
//now all threads finished, close the connection
jdbcTemplate.getConnection().close();
}
мне интересно, если это правильный способ сделать это или делать какое-либо, выходящее/оптимизированное решение, что из коробки Мне не хватает. Я не могу использовать spring-data-jpa, так как мои запросы сложны.
Благодаря
Я думаю, вы неправильно поняли мой вопрос. Я знаю, что мы получаем пул данных. но мой вопрос заключается в использовании этого объединенного источника данных для обработки нескольких таблиц в настоящее время. –