Java Springboot - Параллельное подключение к базе данных - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь достичь параллельного соединения с базой данных, поэтому даже если истекло время ожидания, другие соединения не ждут. Эта функция будет использоваться для мониторинга доступности серверов 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);
        }
    }

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...