Eclipse Vert.x 3.8 führt einen reaktiven SQL-Client ein

Das Framework zur reaktiven Programmierung mit Java erweitert den Reactive PostgreSQL Client für die Zusammenarbeit mit MySQL.

In Pocket speichern vorlesen Druckansicht 4 Kommentare lesen
Eclipse Vert.x 3.8 führt einen reaktiven SQL-Client ein
Lesezeit: 3 Min.
Von
  • Rainald Menge-Sonnentag

Das Team hinter Vert.x hat Version 3.8 des Frameworks zum Erstellen reaktiver Anwendungen in Java veröffentlicht. Neben einem reaktiven SQL-Client für PostgreSQL und MySQL bringt das Release eine Erweiterung der Future-API, die in erster Linie in Vorbereitung auf Vert.x 4 entstanden ist. Außerdem hat der Cassandra-Client die Preview-Phase verlassen, und die Anbindung an die JSON-Bibliothek Jackson ist nun auf Version 2.9.9 ausgelegt.

Der reaktive SQL-Client ist eine Weiterentwicklung des Reactive PostgreSQL Client. Genaugenommen handelt es sich um zwei Clients: einen für PostgreSQL und einen für MySQL. Beide sind Implementierungen zum Zugriff auf die jeweiligen Datenbanksysteme, die reaktiv und nicht blockierend sind. Entwickler können damit mehrere Datenbankverbindungen in einem einzelnen Thread verwalten.

Der Client ist Event-getrieben und bietet ein integriertes Pooling der Verbindungen. Er setzt auf postgresql-async auf, einen asnychronen, Netty-basierten Datenbanktreiber für PostgreSQL und MySQL, auch wenn das in Scala geschriebene Projekt nicht mehr gepflegt wird. Entwickler setzen typischerweise mit PostgreSQLClient.createShared beziehungsweise MySQLClient.createShared einen Pool auf, den sich mehrere Clients teilen. Diese erhalten dann über getConnection eine Verbindung, sobald der Pool eine bereitstellen kann. Die Verbindung ist über das Interface SQLConnection umgesetzt.

Neben den geteilten Verbindungen ist es auch möglich, mit PostgreSQLClient.createNonShared beziehungsweise MySQLClient.createNonShared private Pools für einzelne Client-Instanzen zu erstellen. Die Parameter für die Konfiguration sind für PostgreSQL- und MySQL-Verbindungen dieselben. Neben den typischen datenbankbezogenen Werten wie host, port und database gibt es unter anderem einen Parameter für die maximale Größe eines Pools und Einstellungen für Timeout und Verzögerung zwischen wiederholten Verbindungsversuchen.

Als weitere nennenswerte Neuerung ist die Anpassung des Future-Interface zu nennen, das nun ein separates Promise-Interface bietet. Hintergrund ist ein verbessertes Design der API, bei dem Promise die schreibende und Future die lesende Seite darstellt. Die Änderung bietet für das aktuelle Release keine nennenswerten Verbesserungen, sondern dient vor allem als Vorbereitung auf Vert.x 4.

Weitere Details zu Vert.x 3.8 lassen sich dem Blogbeitrag bei Eclipse entnehmen. Die vollständige Liste der Neuerungen und überholten Funktionen (Deprecations) sowie Breaking Changes ist in den Release Notes zu finden. Vert.x ist sowohl als vollständige als auch als minimale Distribution auf der Download-Seite zu finden. Eine Implementierung als Docker-Container steht auf Docker Hub bereit. (rme)