fb
Microservices 4 minuten

Het WSO2 Microservices Framework voor Java (MSF4J)

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

Het WSO2 Microservices Framework voor Java (MSF4J) is een lichtgewicht en prestatiegericht framework voor de ontwikkeling en het draaien van microservices. Het is onderdeel van de WSO2 Enterprise Integrator.

Service Oriented Architecture (SOA) en het concept van diensten zoals de xml-based SOAP- en RESTFUL-diensten zijn ons wel bekend, maar onlangs hebben we de opkomst van zogenoemde ‘microservices’ meegemaakt. Het is tijd om dit nieuwe concept eens onder de loep te nemen.

Wat zijn microservices?

Microservices zijn diensten met een hele smalle focus. Een microservice doet maar één ding en draagt de volledige verantwoordelijkheid voor dat ene ding, inclusief het beheer van de gegevens.

Het heeft een duidelijk omlijnde context, waarin geen overlap is met de context van alle andere microservices. Het is een inzetbare eenheid en daarom heeft iedere microserivce zijn eigen levensloop. Als je er goed over nadenkt merk je dat dit tal van implicaties heeft. Microservices delen geen gezamenlijk gegevensmodel, maar zijn volledig op zichzelf aangewezen. Daarom speelt er zich binnen de microservice architectuur een berg aan inter-service communicatie af. Dit is de prijs die je betaald voor maximale flexibiliteit.

Het MSF4J framework

MSF4J wordt door WSO2 aangeprezen als een van de best presterende raamwerken van lichtgewicht Java microservices. Als je meer wilt weten over hoe goed de prestaties uit de tests komen, kun je een kijkje nemen in GitHub repository.

MSF4J is een relatief nieuw product van WSO2. In tegenstelling tot bestaande producten zoals Enterprise Integrator en de API Manager is de MSF4J een product waarin we de diensten daadwerkelijk programmeren en niet alleen configureren.

Je schrijft Java-programma’s in een speciaal Maven archetype en het is specifiek gericht op verbindingsdiensten zoals REST.

Hello world met MSF4J

Het is heerlijk eenvoudig om een Java-microservice te schrijven en uit te rollen met WSO2 MSF4J. Het enige wat je hoeft te doen is je service annoteren en het vervolgens uit te rollen met een enkele regel aan code.

Laten we het eens proberen door een “Hello world”-bericht te sturen via MSF4J-microservice. In vervolgblogs zullen we het voorbeeld waaraan we hier beginnen verder uitbreiden.

Je kunt ook het msf4j-microservice Maven-archetype gebruiken om je eerste MSF4J project te maken. Zorg er wel voor dat je JDK 1.8 en Maven 3.x geïnstalleerd hebt en dan pas het volgende commando runt.

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

Als Maven om bevestiging van je keuze vraagt, kunt je gewoon op Enter drukken.

Dit commando vertelt Maven wat het moet maken. De groene commando’s zijn de commando’s die je normaal gesproken niet wilt veranderen, omdat die nodig zijn om een MSF4J dienst aan te maken. De rode commando’s worden gebruikt voor de naamgeving van de Microservices en daar kan natuurlijk wel aan gesleuteld worden, zodat alles aan jouw doelen en afspraken over naamgeving voldoet.

Kopieer dit commando naar je terminal of commandovenster en voer het uit. Maven (mvn) is natuurlijk nodig om jouw eerste MSF4J project te creëren, dus als je Maven nog niet geïnstalleerd hebt, kun je het hier vinden.

Deze code zal een projectstructuur genereren zodat je snel aan de slag kunt. Navigeer nu naar de Hello-Service map. Daar vind je een.xml-bestand en een src-map.

De POM spreekt voor zicht. We hebben de msf4j-analytics dependency uitgezet, omdat we metrics en monitoring willen hebben.

Blog-16-2

De POM is gevuld met de parameters die je met mvn-commano hebt doorgegeven. De POM bepaald natuurlijk de opbouw van het JAR-bestand dat we zullen runnen met het java -jar [nameofjar] commando.

Eerst zullen we echter onze Hello world service moeten maken. De Code die in de [STARTDIR]Hello-Servicesrcmainjavaorgexampleservice geplaatst is, is automatisch gegeneerd en doet maar weinig.

HelloService.java

Change the org.example.service.HelloService class as follows to echo back the name input parameter.

You can remove the auto generated code and replace it with the following code segment:

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;
}
}

We voegen de mogelijkheid in om een bericht op de console (terminal) te plaatsen en daarnaast ook een normale reactie in bijvoorbeeld een browser.

Application.java

Dit is de oneliner die de service uitrolt via WSO2 MSF4J.

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

Je kunt ook de poort(en) als een argument voor de MicroservicesRunner class constructor doorgeven. Als de poort(en) als een argument doorgegeven worden, dan wordt er standaard verbonden met de 0.0.0.0 host. Gebruik “msf4j.host”-omgevingsvariabele om waarde van de host te overschrijven.

De service opbouwen

Run het volgende commando in Maven: mvn package

Dit maakt de vette jar ‘Hello-Service-0.1-SNAPSHOT.jar’ in de doelmap aan. Dit jar-bestand is voor de simpele HelloService al 6 to 12 MB groot. Het bevat zowel je microservice als alle dependencies.

Run de service

Je hoeft nu alleen het volgende commando te runnen om je service aan de praat te krijgen. Dit gaat met de volgende code:

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

Test het bovenstaande Service Run commando en ga naar http://localhost:8080/hello/yenlo in je browser om de reactie in de terminal te bekijken (This is my response: Hello yenlo) of bekijk het in de terminal zelf.

Blog-16-3
Blog-16-4

Dit is natuurlijk een heel simpel voorbeeld. In toekomstige blogs zal ik zinvollere en meer ‘waarheidsgetrouwe’ microservices laten zien.

Als je vragen hebt over deze blogpost, neem dan gerust contact met ons op via het commentaar hieronder. Bekijk ook onze WSO2 tutorials, webinars of white papers voor meer technische informatie. Ondersteuning nodig? Wij bieden WSO2 Productondersteuning, en ondersteuning voor WSO2 Development, WSO2 Operational en WSO2 Trainingsprogramma’s.