Почему 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 для вашей конечной точки.