Почему quarkus использует hibernate reactive для работы с базой данных, а метод запроса не использует пул соединений с базой данных

Я использую инфраструктуру quarkus, интегрирую hibernate reactive и использую метод списка щегольства для запросов. Я обнаружил, что он не использует пул соединений, а использует соединение напрямую. В результате запрос нельзя использовать после закрытия соединения.

SqlClientConnection

      
public CompletionStage<RowSet<Row>> preparedQuery(String sql, Tuple parameters) {
        feedback(sql);
        String processedSql = usePostgresStyleParameters ? Parameters.process( sql, parameters.size() ) : sql;
        return Handlers.toCompletionStage(
                        handler -> client().preparedQuery( processedSql ).execute( parameters, handler )
        );
}

PanacheQueryImpl

        @Override
    public <T extends Entity> Uni<List<T>> list() {
        return delegate.list();
    }


Я хотел бы знать, как использовать пул при запросе?

1 ответ

Технически ему не нужен традиционный пул подключений, потому что все операции неблокируются, поэтому вы можете легко полностью загрузить свой ЦП одним подключением к базе данных.

На практике по умолчанию используется одно соединение для каждого контекста Vert.x, и по умолчанию у вас будет два таких контекста на ЦП.

Когда вы говорите, что «запрос нельзя использовать после закрытия соединения», я подозреваю, что вы на самом деле столкнулись с ошибкой, которую мы недавно исправили; пожалуйста, добавьте больше деталей к новому вопросу; Я подозреваю, что решение вашей проблемы (в этом случае) заключается в том, что вам нужно использовать Panache Reactive из неблокирующего контекста, например, используя RESTEasy Reactive для вашей конечной точки.

Другие вопросы по тегам