Как обработать тайм-аут PostgreSQL в Groovy - PullRequest
0 голосов
/ 13 мая 2019

В моем скрипте Groovy у меня следующая структура:

def sql = Sql.newInstance(connString, "user", "password", 
"org.postgresql.Driver")

sql.withTransaction {
     sql.withBatch(){}

     sql.withBatch(){}

     sql.withBatch(){}

     .........

}

sql.close()

Я хочу позаботиться о проблемах тайм-аута здесь.

Но у Sql API нет никакого метода для этого.

Так как я могу это сделать? Я использую драйвер PostgreSQL.

Я наткнулся на это . Но я получаю ошибку:

java.sql.SQLFeatureNotSupportedException: метод org.postgresql.jdbc4.Jdbc4Connection.setNetworkTimeout (Executor, int) еще не реализован.

PS:

int[] modifyCount = sql.withBatch(batchSize, updateQuery) { ps ->
        keyValue.each { k,v ->
            ps.addBatch(keyvalue:k, newvalue:v)
        }
    }

В приведенном выше коде, когда я пытаюсь добавить ps.setQueryTimeout (), сообщение об ошибке говорит, что такой метод не определен.

1 Ответ

2 голосов
/ 13 мая 2019

Тайм-ауты низкого уровня могут быть определены через свойства соединения:

https://jdbc.postgresql.org/documentation/head/connect.html

  • loginTimeout Укажите, как долго ждатьдля установления соединения с базой данных.
  • connectTimeout Значение времени ожидания, используемое для операций подключения через сокет.
  • socketTimeout Значение времени ожидания, используемое для операций чтения сокета.

Эти свойства могут быть указаны либо в URL-адресе соединения, либо в дополнительном параметре объекта Properties.

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

sql.withStatement{java.sql.Statement stmt->
    stmt.setQueryTimeout( MY_SQL_TIMEOUT )
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...