2016-05-13 14 views
1

Ich bin auf der Suche nach einem Analog der setDefaultTimeout Methode von Spring AbstractPlatformTransactionManager im jOOQ/HikariCP Verbindungspool.Wie setze ich das Transaktionszeitlimit in HikariCP ein

fand ich verschiedene Timeouts wie loginTimeout, maxLifetime und idleTimeout in HikariDataSource, aber keiner von ihnen scheint mein Ziel zu passen.

Ich sah auch TransactionProvider von jOOQ.

Nach einiger Code Untersuchung Quelle ich den folgenden Code in HikariCP gesichtet:

  setNetworkTimeout(connection, validationTimeout); 

     try (Statement statement = connection.createStatement()) { 
      if (isNetworkTimeoutSupported != TRUE) { 
       setQueryTimeout(statement, 
        (int) MILLISECONDS.toSeconds(
         Math.max(1000L, validationTimeout))); 
      } 

      statement.execute(config.getConnectionTestQuery()); 
     } 

bei dieser Suche, nehme ich an, die Konfiguration, die ich nach validationTimeout heißt bin. Ist das richtig?

Antwort

0

Der Code, den Sie gefunden haben, besteht darin, eine Verbindungsüberprüfungsabfrage (normalerweise sehr schnell) auszuführen, bei der 'Überprüfungstimeout' angewendet wird.

wahrscheinlich die meisten, Transaktion in ‚App‘ wird viel länger dauern als Timeout-Validierung für HikariCP

derzeit angegeben, können Sie Abfrage Zeit für org.jooq.Query aber nicht für org.jooq.Routine gesetzt . Siehe https://github.com/jOOQ/jOOQ/issues/3892

0

Wenn Sie auf AbstractPlatformTransactionManager verweisen, vermute ich, dass Sie Transaktionen verwenden möchten, die Ihre Abfragen mithilfe von JOOQ über einen HikariCP-Verbindungspool ausdrücken. vielleicht jOOQ der Transaktionsdokumentation hier

http://www.jooq.org/doc/3.8/manual/sql-execution/transaction-management/ 

Der beste Ort, um Wie man es von Frühling kommen, der Frühling TX Integration vielleicht ein guter Ausgangspunkt.

HikariCP bietet selbst kein Timeout-Management, da es sich nur auf die Verwaltung der Verbindungen konzentriert, die es gebildet hat. Als solche ist die 3 Werte haben Sie tun aufgelistet sehr verschiedene Dinge

Logintimeout - wie lange HikariCP wird auf eine Verbindung warten auf die Datenbank gebildet werden (im Grunde eine JDBC-Verbindung)

maxLifetime - wie lange eine Verbindung leben im Pool vor dem Schließen

idleTimeout - wie lange eine nicht verwendete Verbindung im Pool lebt

Verwandte Themen