fb
Microservices 4 Minuten

WSO2 Microservices Framework für Java (MSF4J)

Rob Blaauboer
Rob Blaauboer
Integration Consultant & WSO2 Trainer
Blog 16 1
Scrollen
Blog-16-1

WSO2 Microservices Framework für Java (MSF4J) ist ein leichtgewichtiges Hochleistungs-Framework für die Entwicklung und Ausführung von Microservices. Es ist im WSO2 Enterprise Integrator enthalten.

Wir sind mit der Service Oriented Architecture (SOA) und dem Konzept von Diensten wie den xml-basierten SOAP-Diensten und RESTFUL-Diensten vertraut, aber in letzter Zeit haben wir das Aufkommen so genannter Microservices erlebt. Tauchen wir also in dieses neue Konzept ein.

Was sind Microservices?

Microservices sind beschränkt fokussierte Dienste. Ein Microservice tut nur eine Sache und trägt die volle Verantwortung dafür – einschließlich der Verwaltung der Daten.

Es hat einen klar abgegrenzten Kontext, der sich nicht mit dem Kontext eines anderen Mikrodienstes überschneidet. Er ist eine einsetzbare Einheit, daher wird jeder Mikrodienst seinem eigenen Lebenszyklus folgen. Wenn du darüber nachdenkest, hat dies zahlreiche Auswirkungen. Microservices haben kein gemeinsames Datenmodell, sie sind völlig in sich geschlossen. Daher findet innerhalb einer Microservice-Architektur viel dienstübergreifende Kommunikation statt. Das ist der Preis, den du für maximale Agilität zahlst.

Der MSF4J Framework

Vom WSO2 als eines der leistungsstärksten, leichtgewichtigen Java-Mikroservice-Frameworks angepriesen. Falls du mehr über den Leistungstest wissen möchtest, wirf einen Blick auf das github-Repository, das du hier findest.

MSF4J ist ein relativ neues Produkt von WSO2. Im Gegensatz zu bestehenden Produkten wie Enterprise Integrator und API Manager ist das MSF4J ein Produkt, bei dem wir die Dienste tatsächlich codieren, anstatt sie zu konfigurieren.

Du schreibst Java-Programme mit einem speziellen Maven-Archetyp und es ist typischerweise auf Konnektivitätsdienste wie REST ausgerichtet.

Hallo Welt mit MSF4J

Es ist wirklich einfach, einen Java-Microservice unter Verwendung von WSO2 MSF4J zu definieren und bereitzustellen. Dazu muss dein Dienst lediglich mit Anmerkungen versehen und mit einer einzigen Codezeile bereitgestellt werden.

Fangen wir damit an, einen Hallo-Welt MSF4J-Microservice zu schreiben. In späteren Blogs werden wir das Beispiel, das wir in diesem Blog erstellen, erweitern.

Du kannst den Maven-Archetyp des msf4j-microservice verwenden, um dein erstes MSF4J-Projekt zu erstellen. Achte darauf, dass du JDK 1.8 und Maven 3.x installiert hast, & führe den folgenden Befehl aus.

mvn archetype:generate 
-DarchetypeGroupId=org.wso2.msf4j 
-DarchetypeArtifactId=msf4j-microservice 
-DarchetypeVersion=2.5.2 -DgroupId=org.example 
-DartifactId=Hello-Service -Dversion=0.1-SNAPSHOT 
-Dpackage=org.example.service -DserviceClass=HelloService

Wenn Maven dich bittet, deine Wahl zu bestätigen, drücke einfach Enter.

Dieser Befehl teilt Maven mit, was zu erstellen ist. Die Befehle in grün sind Befehle, die du normalerweise nicht ändern würdest, da sie zum Erstellen eines MSF4J Dienstes benötigt werden. Die Befehle in rot werden eher zur Benennung der Microservices verwendet und können natürlich geändert werden, um deinen Zweck und deinen Namenskonventionen gerecht zu werden.

Kopiere diesen Befehl in dein Terminal oder Befehlsfenster und führe ihn aus. Maven (mvn) sollte natürlich vorhanden sein, um dein erstes MSF4J-Projekt zu erstellen. Falls du Maven nicht installiert hast, kannst du es hier finden.

Dadurch wird eine Projektstruktur erzeugt, die dir einen schnellen Einstieg ermöglicht. Navigiere als nächstes zum Hello-Service-Verzeichnis. Dort findest du eine pom.xml Datei und auch ein src Verzeichnis.

Das POM ist recht unkompliziert. Wir haben die Abhängigkeit von msf4j-analytics nicht kommentiert, weil wir Metriken und Monitoring haben wollen.

Blog-16-2

Dieses pom ist mit den Parametern gefüllt, die du mit dem mvn-Befehl übergeben haben. Der POM bestimmt natürlich den Aufbau der JAR-Datei, die wir mit dem Befehl java -jar [nameofjar] ausführen werden.

Aber zuerst müssen wir unseren Hello World Service einrichten. Der Code, der sich im [STARTDIR]Hello-Servicesrcmainjavaorgexampleservice Beispiel-Dienst befindet, ist automatisch generierter Code und leistet wenig.

HelloService.java

Verändere die Klasse org.example.service.HelloService wie folgt, um den Namenseingabeparameter zurückzugeben.

Du kannst den automatisch generierten Code entfernen und durch das folgende Codesegment ersetzen:

package org.example.service;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
@Path("/hello")
public class HelloService { 
   @GET
    @Path("/{name}")
    public String hello(@PathParam("name") String name) {
        System.out.println("This is my response: Hello " + name);
        return "This is my response: Hello " + name;
}
}

Wir bieten die Möglichkeit, eine Nachricht auf die Konsole (Terminal) zu legen, sowie eine regelmäßige Rückmeldung z.B. in einem Browser.

Application.java

Dies ist der Einzeiler zur Bereitstellung deines Dienstes mit WSO2 MSF4J.

public class Application {
    public static void main(String[] args) {
        new MicroservicesRunner()
                .deploy(new HelloService())
                .start();
    }
}

Du kannst den/die Port(s) auch als Argument an den MicroservicesRunner-Klassenkonstruktor übergeben. Wenn du den/die Port(s) als Argument übergibst, wird standardmäßig an den Host 0.0.0.0.0 gebunden. Benutze die Umgebungsvariable „msf4j.host“, um den Host-Wert zu überschreiben.

Den Dienst erstellen

Führe den folgenden Maven-Befehl aus: mvn package

Dadurch wird das Fat Jar Hello-Service-0.1-SNAPSHOT.jar im Zielverzeichnis erstellt. Dieses Jar ist für den einfachen HelloService bereits 6 bis 12 MB groß.

Dieses Fat Jar ist eine jar-Datei, die Ihren Microdienst sowie alle seine Abhängigkeiten enthält.

Den Dienst ausführen

Du brauchst nur den folgenden Befehl auszuführen, um deinen Dienst zum Laufen zu bringen. Dies erfordert

java -jar target/Hello-Service-0.1-SNAPSHOT.jar

Teste den Dienst und führe den obigen Befehl aus. Gehe einfach von deinem Browser aus auf http://localhost:8080/hello/yenlo) und schau dir die Response sowohl im Terminal (Dies ist meine Antwort: Hallo Yenlo) als auch im Terminal an.

Blog-16-3
Blog-16-4

Dies ist natürlich ein sehr einfaches Beispiel. In zukünftigen Blogs werden wir sinnvollere und „echtere“ Microservices entwickeln.

Wenn du Fragen zu diesem Blog hast, kontaktiere uns über den Kommentarbereich unten. Schau dir auch unsere WSO2-Tutorials, Webinare oder Whitepapers an, um weitere technische Informationen zu erhalten. Benötigst du Unterstützung? Wir bieten WSO2-Produktsupport, WSO2-Entwicklungsunterstützung, WSO2-Betriebsunterstützung und WSO2-Trainingsprogramme.