Я пытаюсь достичь параллельного соединения с базой данных, поэтому даже если истекло время ожидания, другие соединения не ждут. Эта функция будет использоваться для мониторинга доступности серверов sql каждые 5 минут. Можно ли использовать OracleDriver в SpringBoot?
Я пробовал использовать CompletableFuture
@Async
public void startMonitoring () throws ExecutionException, InterruptedException {
CompletableFuture<List<DbSqlServer>> listCompletableFuture = dbQueryServerService.getAllServersMultiThreaded();
DbData data = new DbData();
listCompletableFuture.get().forEach(server -> {
dbQueryServerService.check(server, data);
});
@Async
public CompletableFuture<List<DbSqlServer>> getAllServersMultiThreaded(){
final List<DbSqlServer> servers = dbServerRepositoryImpl.findByOrderByEnvironmentAsc();
return CompletableFuture.completedFuture(servers);
}
@Async
public void check(DbSqlServer server, DbData data) {
try {
DriverManager.getConnection(server.getUrl(), server.getUsername(), server.getPassword());
log.debug("Connection with {} established by {}", server.getHostname(), Thread.currentThread().getName());
synchronized (data) {
DbConnection dbConnection = new DbConnection(data, server);
dbConnection.setStatus(true);
data.getDbConnections().add(dbConnection);
}
} catch (SQLException e) {
System.out.println("Exception to: " + e);
} finally {
dataServerRepository.save(data);
}
}
Заранее спасибо!