Heim > Java > javaLernprogramm > Hauptteil

So implementieren Sie den Hikari-Verbindungspool und konfigurieren die JMX-Überwachung mit SpringBoot

王林
Freigeben: 2023-05-15 19:58:04
nach vorne
1688 Leute haben es durchsucht

Hikari ist der Standard-Datenbankverbindungspool von Spring Boot. Im Gegensatz zu C3P0, das verschiedene Statusindikatoren direkt über das Verbindungspoolobjekt erhält, muss Hikari diese über JMX abrufen. Die Demo sieht wie folgt aus: Mithilfe der Spring Boot-Integration wird der Verbindungsstatus regelmäßig erfasst.

public static void main(String[] args) throws SQLException, MalformedObjectNameException, InterruptedException {
 SpringApplication.run(HikariTest.class, args);
 HikariDataSource hikaridatasource = new HikariDataSource();
 hikaridatasource.setJdbcUrl("jdbc:mysql://localhost:3306?serverTimezone=GMT");
 hikaridatasource.setUsername("root");
 hikaridatasource.setPassword("");
 hikaridatasource.setDriverClassName("com.mysql.cj.jdbc.Driver");
 hikaridatasource.setRegisterMbeans(true);
 hikaridatasource.setPoolName("HikariConnectionPool");
 MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
 ObjectName poolName = new ObjectName("com.zaxxer.hikari:type=Pool (" + hikaridatasource.getPoolName() + ")");
 poolProxy = JMX.newMXBeanProxy(mBeanServer, poolName, HikariPoolMXBean.class);
 Connection conn = hikaridatasource.getConnection();
 Statement sm = conn.createStatement();
 ResultSet rs = null;
 for (int i = 0; i < 999999999; i++) {
  rs = sm.executeQuery("select name from test.t1");
 }
 rs.close();
 sm.close();
 conn.close();
 hikaridatasource.close();
}

@Scheduled(fixedRate = 1000)
public void HikariMonitor() {
 if(poolProxy == null) {
  log.info("Hikari not initialized,please wait...");
 }else {
  log.info("HikariPoolState = "
  + "Active=[" + String.valueOf(poolProxy.getActiveConnections() + "] "
  + "Idle=[" + String.valueOf(poolProxy.getIdleConnections() + "] "
  + "Wait=["+poolProxy.getThreadsAwaitingConnection()+"] "
  + "Total=["+poolProxy.getTotalConnections()+"]")));
 } 
}
Nach dem Login kopieren

Darüber hinaus wird auf Github ein solches Problem erwähnt:

ObjectName poolName = new ObjectName("com.zaxxer.hikari:type=Pool (" + hikaridatasource.getPoolName() + ")");
Nach dem Login kopieren

kann einen Fehler auslösen

22:06:23.231 [main] DEBUG com.zaxxer.hikari.HikariConfig – Treiberklasse com.mysql. cj .jdbc.Driver im Thread-Kontext-Klassenlader sun.misc.Launcher$AppClassLoader@73d16e93
Ausnahme im Thread „main“ java.lang.reflect.UndeclaredThrowableException
bei com.sun.proxy.$Proxy2.getIdleConnections (Unbekannte Quelle) gefunden
bei com.zte.hikariTest.HikariTest.main(HikariTest.java:32)
Verursacht durch: javax.management.InstanceNotFoundException: com.zaxxer.hikari:type=Pool (foo)
bei com.sun.jmx.interceptor. DefaultMBeanServerInterceptor .getMBean(Unbekannte Quelle)
bei com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(Unbekannte Quelle)
bei com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(Unbekannte Quelle)
bei com.sun.jmx.mbeanserver . MXBeanProxy$GetHandler.invoke(Unbekannte Quelle)
bei com.sun.jmx.mbeanserver.MXBeanProxy.invoke(Unbekannte Quelle)
bei javax.management.MBeanServerInvocationHandler.invoke(Unbekannte Quelle)
... 2 weitere

Dies Da Hikari-Einstellungsparameter auch setHikariConfig und Konfigurationsdateien unterstützen, wählen Sie bitte eine davon für die Konfiguration aus, anstatt beide zusammen zu verwenden. Und bitte konfigurieren Sie die Eigenschaften wie folgt, sonst wird JMX nicht wirksam.

hikaridatasource.setRegisterMbeans(true);
Nach dem Login kopieren

Der Codeeffekt ist wie folgt

2019-03-09 02:05:04.738 INFO com.zte.hikariTest.HikariTest.69 -HikariPoolState = Active=[1] Idle=[9] Wait=[ 0 ] Total=[10]
2019-03-09 02:05:05.740 INFO com.zte.hikariTest.HikariTest.69 -HikariPoolState = Active=[1] Idle=[9] Wait=[0] Total=[10 ]
2019-03-09 02:05:06.732 INFO com.zte.hikariTest.HikariTest.69 -HikariPoolState = Active=[1] Idle=[9] Wait=[0] Total=[10]
2019-03- 09 02:05:07.738 INFO com.zte.hikariTest.HikariTest.69 -HikariPoolState = Active=[1] Idle=[9] Wait=[0] Total=[10]

Das obige ist der detaillierte Inhalt vonSo implementieren Sie den Hikari-Verbindungspool und konfigurieren die JMX-Überwachung mit SpringBoot. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!