Die Karawane zieht weiter

Apache Camel 2.18 bringt verbesserte Spring-Boot-Unterstützung

Dominik Mohilo

© Shutterstock.com / Konstantnin

Die neue Version der Routing- und Konvertierungsengine Apache Camel ist fertig. Mit Camel 2.18 wurden über 500 Issues bearbeitet, darunter rund 170 Bugs. Außerdem an Bord: etwa 220 Verbesserungen und 65 neue Features. Zu den Highlights gehören unter anderem die automatische Dokumentation und die verbesserte Unterstützung von Spring Boot.

Die Tatsache, dass Gregor Zurowski bei der offiziellen Ankündigung zu Apache Camel 2.18 von einem minor Release spricht, verwirrt: Über 500 Neuerungen, Verbesserungen und Bugfixes sind alles andere als ein „kleines“ Release. Es verwundert daher wohl niemanden, dass andere Mitarbeiter des Middleware-Integrationsprojektes andere Worte finden.

So etwa Claus Ibsen, Vollzeit-Committer beim Projekt, der auf dem Portal Java Code Geeks von einem signifikanten Release spricht. Oder auch Nicola Ferraro, der Apache Camel 2.18 die Qualität eines major Releases bescheinigt, auch wenn die Vorgängerversion 2.17.3 hieß.

Java 8

Ein wichtiger Schritt für Apache Camel war es, auf Java 8 umzustellen und damit aktuell zu bleiben. Apache Camel 2.18 ist damit die erste Version, die Java 1.8 benötigt. Das Camel-API ist in dem Sinne rückwärtskompatibel, als dass Nutzer ihren existierenden Sourcecode für Camel-Anwendungen einfach in Java 1.8 kompilieren können und dann keine Probleme mehr haben sollten.

Innerhalb des Quellcodes von Camel wurden für neue Funktionen in der aktuellen Version Java-8-APIs verwendet, während bereits existierende Features noch auf jene APIs von Java 7 setzen. So wurde in 2.18 die Nutzung von Lambdas für den größten Teil des Codes gestattet, auch die API-Inferfaces wurden für die Unterstützung von Lambdas im User-Code, also etwa bei Transformationen, fit gemacht.

Automatische Dokumentation

Eine saubere Dokumentation ist die Visitenkarte eines Tools und somit kein unwichtiges Beiwerk. Um die Dokumentation von Apache Camel in Zukunft 100-prozentig aktuell zu halten, wurde für Version 2.18 eine automatische Dokumentation implementiert. Diese dokumentiert sämtliche Optionen von Komponenten, Sprachen, Datenformaten usw. im Sourcecode. Dieser wird anschließend im Build extrahiert und dazu genutzt wird, die Dokumentation auf Stand zu halten.

Bereits jetzt wurde beinahe die gesamte bisherige Dokumentation vom alten Wiki-System in *.adoc-Dateien im Quellcode migriert. Die Arbeit an der Finalisierung und einer neuen Webseite für die Dokumentation gehen weiter, abgeschlossen sollen sie mit dem nächsten Release sein.

Spring Boot

Seit Apache Camel 2.15 wird Spring Boot unterstützt, doch erst mit dem aktuellen Update wurden sämtliche Camel-Komponenten so kuratiert, dass sie fortan als First Class Spring Boot Starter Components eingesetzt werden können.

Mit anderen Worten: Von jeder Camel-Komponente gibt es eine andere Version, den sogenannten Component Starter, die genau wie eine normale Komponente funktioniert, aber für das Framework Spring Boot optimiert ist. Als Dependencies sollten also -starters verwendet werden (etwa camel-kafka-starter).

Einer der wichtigsten Vorteile, der mit dieser Neuerung einhergeht, ist die Möglichkeit, Camel-Komponenten mit dem neuen Spring-Boot-Konfigurationsmechanismus zu konfigurieren. Für diese Konfiguration kann etwa die Datei application.properties genutzt werden. Ermöglicht wird dies dadurch, dass sämtliche Komponenten von Camel 2.18 entsprechenden Quellcode generieren.

Spring Boot Configuration / Quelle: Blog von Nicola Ferraro

Spring Boot Configuration / Quelle: Blog von Nicola Ferraro

Camel-Spring-Boot-Anwendungen stellen nun, Dank des Actuator-Moduls von Spring Boot, verlässliche Health Checks am Endpunkt /heath zur Verfügung. Dies ist eine Grundvoraussetzung für jeden Microservice innerhalb einer Cloud-Umgebung denn nur so wird der entsprechenden Cloud-Plattform (bspw. Kubernetes) ermöglicht, Anomalien zu erkennen und zu beheben.

Weitere neue Features

Apache Camel 2.18 enthält ein ganzes Set aus Komponenten, die sich ideal dazu eignen, Microservices zu erstellen. Zu den Features gehören die Circuit Breakers von camel-hystrix, das Load Balancing von camel-ribbon und verteiltes Tracing mit camel-zipkin. Für das schnelle Erstellen von Anwendungen, die mit der populären Messaging-Anwendung Telegram integriert sind, kann camel-telegram genutzt werden.

Weitere neue Komponenten sind unter anderem camel-flink, das Camel Konnektoren mit Tasks von Apache Flink verbindet und camel-consul für die Integration von Anwendungen mit Consul. Um mit Asterisk-PBX-Servern und dem Ehcache-3-Cache zu interagieren, gibt es camel-asterisk und camel-ehcache.

Achtung! Claus Ibsen weist darauf hin, dass ältere Versionen von Spring als 3.x und 4.0.x nicht mehr unterstützt werden. Auch OSGi-Nutzer, die ServiceMix/Karaf nutzen, sollten Karaf 4.x verwenden, keinesfalls ältere Versionen. Auf diesen könnte Camel zwar laufen, aber offiziell wird dies nicht unterstützt und das nächste Camel-Release wird den Support für ältere Versionen definitiv nicht mehr gewährleisten. Zudem sollten OSGi-Nutzer, die auch Spring-DM verwenden, das Modul camel-spring-dm installieren, da Spring DM aus camel-spring entfernt wurde. Außerdem wird ab sofort Spring Boot 1.4.x benötigt.

Eine vollständige Liste mit Änderungen gibt es auf der JIRA-Seite der Apache Foundation, weitere Informationen zu den Änderungen im Artikel von Claus Ibsen und auf dem Blog von Nicola Ferraro.

Ausblick

Für das nächste Update ist die weitere Entwicklung im Bereich Java 8 geplant. Auch die Migration der Dokumentation und eine neue Webpräsenz sind fest für Apache Camel 2.19 eingeplant, genau wie ein neues Logo. Die Veröffentlichung von Apache Camel 2.19 wird voraussichtlich im ersten Quartal nächsten Jahres stattfinden. Anschließend, so deutet Ibsen an, gehe es an die Arbeit für Apache Camel 3.x, allerdings sei diese Entscheidung noch in den Händen der Community.

Hintergrund

Apache Camel ist ein recht populäres Middleware-Integrationsprojekt der Java-Welt: Basierend auf den Enterprise Integration Pattern lassen sich dank ihm Routing- und Konvertierungsregeln definieren, die den Kommunikationsfluss zwischen verschiedenen Software-Komponenten steuern. Hierfür können ein Java-basiertes Fluent API, Spring- und Blueprint-XML-Konfigurationsdateien oder eine Scala-DSL zum Einsatz kommen.

Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Hinterlasse einen Kommentar

2 Kommentare auf "Apache Camel 2.18 bringt verbesserte Spring-Boot-Unterstützung"

avatar
400
  Subscribe  
Benachrichtige mich zu:
Christian Mueller
Gast

Camel 2.18.0, nicht 2.8.0 wie in der Überschrift angegeben…