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.
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.
Ein Pool fĂĽr Datenbankverbindungen
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.
Vorbereitung auf die Zukunft mit Future-Anpassungen
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)