Početak rada s Mule ESB-om

1. Pregled

Mule ESB je lagana Enterprise Service Bus zasnovana na Javi. Omogućava programerima povezivanje više aplikacija razmjenom podataka u različitim formatima. Nosi podatke u obliku poruke.

ESB-ovi nude moćne mogućnosti pružajući brojne usluge, kao što su:

  • Stvaranje usluge i hosting
  • Uslužno posredovanje
  • Usmjeravanje poruka
  • Transformacija podataka

ESB-ovi će nam biti korisni ako trebamo integrirati više aplikacija zajedno ili ako imamo ideju dodavanja više aplikacija u budućnosti.

ESB se također koristi za rješavanje više od jedne vrste komunikacijskog protokola i kada su potrebne mogućnosti usmjeravanja poruka.

Stvorimo primjerak projekta u odjeljku 5 pomoću AnyPoint Studio koja je ovdje dostupna za preuzimanje.

2. Struktura poruke mazgi

Jednostavno rečeno, primarna svrha ESB-a je posredovanje između usluga i usmjeravanje poruka do različitih krajnjih točaka. Stoga se mora nositi s različitim vrstama sadržaja ili korisnim opterećenjem.

Struktura poruke podijeljena je u dva dijela:

  • Zaglavlje, kojesadrži metapodatke poruke
  • Korisni teret koji sadrži poslovne podatke

Poruka je ugrađena u objekt poruke. Objekt poruke možemo dohvatiti iz konteksta. Njegova svojstva i korisni teret možemo promijeniti koristeći prilagođene Java komponente i transformatore unutar protoka Mule.

Svaka se aplikacija sastoji od jednog ili više tijekova.

U tijeku možemo koristiti komponente za pristup, filtriranje ili izmjenu poruke i njenih različitih svojstava.

Na primjer, primjerak poruke možemo dobiti pomoću Java komponente. Ova klasa komponenata implementira a Pozivno sučelje iz org.mule.api.lifecycle paket:

javni Object onCall (MuleEventContext eventContext) baca iznimku {MuleMessage message = eventContext.getMessage (); message.setPayload ("Korisni teret poruke ovdje je promijenjen."); povratna poruka; }

3. Svojstva i varijable

Metapodaci poruke sastoje se od svojstava. Varijable predstavljaju podatke o poruci. Način na koji se svojstva i varijable primjenjuju tijekom životnog ciklusa poruke definiran je njihovim opsegom. Svojstva mogu biti dva tipa, ovisno o njihovom opsegu: ulazni i izlazni.

Ulazna svojstva sadrže metapodatke koji sprječavaju kodiranje poruka tijekom prolaska kroz tijekove. Dolazna svojstva su nepromjenjiva i korisnik ih ne može mijenjati. Prisutni su samo tijekom trajanja protoka - kad poruka izađe iz toka, ulazna svojstva više nisu tamo.

Izlazna svojstva može Mule automatski postaviti, ili ih korisnik može postaviti kroz konfiguraciju protoka. Ova svojstva su promjenjiva. Oni postaju ulazna svojstva kada poruka uđe u drugi tok nakon prelaska transportnih barijera.

Svojstva odlaznih i ulaznih podataka možemo postaviti i dobiti pozivima povezanih metoda postavljača i getera u njihovim odgovarajućim opsezima:

message.setProperty ("outboundKey", "outboundpropertyvalue", PropertyScope.OUTBOUND); String inboundProp = (String) message.getInboundProperty ("outboundKey");

Postoje dvije vrste varijabli dostupne za deklariranje u aplikacijama.

Jedna je varijabla protoka koja je lokalna za protok mazge i dostupna je za protok, pottok i privatni protok.

Varijable sesije jednom proglašene postaju dostupne u cijeloj aplikaciji.

4. Transportne barijere i protok-ref

Transportne barijere su HTTP-konektori, VM-ovi, JMS-ovi ili slični konektori koji zahtijevaju putove ili krajnje točke za usmjeravanje poruka. Varijable protoka nisu dostupne preko transportnih prepreka, ali varijable sesije su dostupne u cijelom projektu u svim tokovima.

Kada trebamo stvoriti pottok ili privatni tok, možemo se pozvati na tok iz nadređenog ili drugog toka koji koristi protok-ref komponenta. I varijable protoka i varijable sesije dostupne su u podtokovima i privatnim tokovima na koje se odnosi upotreba protok-ref.

5. Primjer projekta

Stvorimo aplikaciju u Anypoint Studiju koja sadrži više tokova koji međusobno komuniciraju putem ulaznih i izlaznih konektora.

Pogledajmo prvi tok:

HTTP slušatelj možemo konfigurirati kao:

Komponente protoka moraju biti unutar a označiti. Dakle, primjer toka s više komponenata je:

Unutar protoka pružamo referencu na konfigurirani HTTP slušatelj. Zatim vodimo zapisnik za bilježenje korisnog tereta koji HTTP slušatelj prima putem POST metode.

Nakon toga postavlja se prilagođena klasa Java transformatora koja transformira korisni teret nakon primanja poruke:

javni Object transformMessage (poruka MuleMessage, String outputEncoding) baca TransformerException {message.setPayload ("Korisni teret se ovdje prenosi."); message.setProperty ("outboundKey", "outboundpropertyvalue", PropertyScope.OUTBOUND); povratna poruka; }

Klasa transformatora mora se proširiti AbstractMessageTransformer. Također postavljamo odlazno svojstvo unutar klase.

Sad smo već pretvorili korisni teret unutar objekta poruke i to zabilježili u konzolu pomoću zapisnika. Postavljamo varijablu protoka i varijablu sesije.

Konačno, svoj teret šaljemo putem odlaznog VM konektora. Put u VM konektoru određuje krajnju točku primanja:

Poruka koju nosi i transformira početni tok doseže Protok1 kroz ulaznu VM krajnju točku.

Java komponenta dohvaća svojstva odlazaka postavljena prvim protokom i vraća objekt koji postaje korisni teret poruke.

The transformMessage () metoda za ovaj zadatak:

javni Object transformMessage (poruka MuleMessage, String outputEncoding) baca TransformerException {return (String) message.getInboundProperty ("outboundKey"); }

Zatim se varijable protoka i sesije postavljaju na drugi tok. Nakon toga imamo referencu na Protok2 koristeći protok-ref komponenta.

U Protok2, transformirali smo poruku pomoću klase Java komponente i zabilježili je u konzolu. Također smo postavili varijablu protoka F3.

Nakon poziva Protok2 koristeći protok-ref, protok1 pričekat će obradu poruke u Protok2.

Bilo koja varijabla protoka postavljena Protok1 i Protok2 bit će dostupna u oba protoka jer ti tokovi nisu odvojeni nikakvim transportnim preprekama.

Konačno, poruka se putem VM-a šalje natrag HTTP podnositelju zahtjeva. Sve smo VM konfigurirali kao zahtjev-odgovor.

Ovu aplikaciju možemo pozvati od bilo kojeg REST klijenta objavljivanjem bilo kakvih JSON podataka u tijelu. URL će biti lokalnihost: 8081 kako je konfigurirano u HTTP slušatelju.

6. Arhetip Mavena

Možemo izraditi Mule ESB projekt pomoću Mulesoftovog arhetipa Maven.

U Mavenovu postavke.xml datoteku, prvo moramo dodati org.mule.tools grupa dodataka:

 org.mule.tools 

Zatim, moramo dodati a profil oznaka koja kaže gdje bi Maven trebao potražiti artefakte Mulesoft:

 Mule Org true mulesoft-Releases MuleSoft Repository //repository-master.mulesoft.org/releases/ default 

Napokon, projekt možemo stvoriti pomoću mazga-projekt-arhetip: stvoriti:

mvn mule-project-archetype: create -DartifactId = muleesb -DmuleVersion = 3.9.0

Nakon konfiguriranja našeg projekta pomoću možemo stvoriti raspoloživu arhivu mvn paket.

Nakon toga rasporedili bismo arhivu u aplikacije mapa bilo kojeg samostalnog poslužitelja Mule.

7. Samostalni poslužitelj mula putem spremišta Maven tvrtke MuleSoft

Kao što smo upravo napomenuli, projekt koji smo upravo stvorili zahtijeva samostalni poslužitelj Mule.

Ako ga već nemamo, možemo urediti svoj pom.xml da izvučete jedan iz MuleSoft-ovog spremišta Maven:

 org.mule.tools.maven mule-maven-plugin 2.2.1 samostalni 3.9.0 implementacija implementacija implementacija 

8. Zaključak

U ovom smo članku prošli kroz različite potrebne koncepte gradnje kao ESB aplikacije u Muleu. Izradili smo primjer projekta koji ilustrira sve opisane koncepte.

Sada možemo početi stvarati ESB aplikaciju pomoću Anypoint Studija kako bismo udovoljili našim različitim potrebama.

Kao i obično, cjelovit projekt možete pronaći na GitHubu.

1. Pregled

Mule ESB je lagana Enterprise Service Bus zasnovana na Javi. Omogućuje programerima da povežu više aplikacija zajedno razmjenom podataka u različitim formatima. Nosi podatke u obliku poruke.

ESB-ovi nude moćne mogućnosti pružajući brojne usluge, kao što su:

  • Stvaranje usluge i hosting
  • Uslužno posredovanje
  • Usmjeravanje poruka
  • Transformacija podataka

ESB-ovi će nam biti korisni ako trebamo integrirati više aplikacija zajedno ili ako imamo ideju dodavanja više aplikacija u budućnosti.

ESB se također koristi za rješavanje više od jedne vrste komunikacijskog protokola i kada su potrebne mogućnosti usmjeravanja poruka.

Stvorimo primjerak projekta u odjeljku 5 pomoću AnyPoint Studio koja je ovdje dostupna za preuzimanje.

2. Struktura poruke mazgi

Jednostavno rečeno, primarna svrha ESB-a je posredovanje između usluga i usmjeravanje poruka do različitih krajnjih točaka. Stoga se mora nositi s različitim vrstama sadržaja ili korisnim opterećenjem.

Struktura poruke podijeljena je u dva dijela:

  • Zaglavlje, kojesadrži metapodatke poruke
  • Korisni teret koji sadrži poslovne podatke

Poruka je ugrađena u objekt poruke. Objekt poruke možemo dohvatiti iz konteksta. Njegova svojstva i korisni teret možemo promijeniti koristeći prilagođene Java komponente i transformatore unutar protoka Mule.

Svaka se aplikacija sastoji od jednog ili više tijekova.

U tijeku možemo koristiti komponente za pristup, filtriranje ili izmjenu poruke i njenih različitih svojstava.

Na primjer, primjerak poruke možemo dobiti pomoću Java komponente. Ova klasa komponenata implementira a Pozivno sučelje iz org.mule.api.lifecycle paket:

javni objekt onCall (MuleEventContext eventContext) baca iznimku {MuleMessage message = eventContext.getMessage (); message.setPayload ("Korisni teret poruke ovdje je promijenjen."); povratna poruka; }

3. Svojstva i varijable

Metapodaci poruke sastoje se od svojstava. Varijable predstavljaju podatke o poruci. Način na koji se svojstva i varijable primjenjuju tijekom životnog ciklusa poruke definiran je njihovim opsegom. Svojstva mogu biti dva tipa, ovisno o njihovom opsegu: ulazni i izlazni.

Ulazna svojstva sadrže metapodatke koji sprječavaju kodiranje poruka tijekom prelaska kroz tijekove. Dolazna svojstva su nepromjenjiva i korisnik ih ne može mijenjati. Prisutni su samo tijekom trajanja protoka - kad poruka izađe iz toka, ulazna svojstva više nisu tamo.

Izlazna svojstva može Mule automatski postaviti, ili ih korisnik može postaviti kroz konfiguraciju protoka. Ova svojstva su promjenjiva. Oni postaju ulazna svojstva kada poruka uđe u drugi tok nakon prelaska transportnih barijera.

Svojstva odlaznih i ulaznih podataka možemo postaviti i dobiti pozivima povezanih metoda postavljača i getera u njihovim odgovarajućim opsezima:

message.setProperty ("outboundKey", "outboundpropertyvalue", PropertyScope.OUTBOUND); String inboundProp = (String) message.getInboundProperty ("outboundKey");

Postoje dvije vrste varijabli dostupne za deklariranje u aplikacijama.

Jedna je varijabla protoka koja je lokalna za protok mazge i dostupna je za protok, pottok i privatni protok.

Varijable sesije jednom proglašene postaju dostupne u cijeloj aplikaciji.

4. Transportne barijere i protok-ref

Transportne barijere su HTTP-konektori, VM-ovi, JMS-ovi ili slični konektori koji zahtijevaju putove ili krajnje točke za usmjeravanje poruka. Varijable protoka nisu dostupne preko transportnih barijera, ali varijable sesije su dostupne u cijelom projektu u svim tokovima.

Kada trebamo stvoriti pottok ili privatni tok, možemo se pozvati na tok iz nadređenog ili drugog toka koji koristi protok-ref komponenta. I varijable protoka i varijable sesije dostupne su u podtokovima i privatnim tokovima na koje se odnosi upotreba protok-ref.

5. Primjer projekta

Stvorimo aplikaciju u Anypoint Studiju koja sadrži više tokova koji međusobno komuniciraju putem ulaznih i izlaznih konektora.

Pogledajmo prvi tok:

HTTP slušatelj možemo konfigurirati kao:

Komponente protoka moraju biti unutar a označiti. Dakle, primjer toka s više komponenata je:

Unutar protoka pružamo referencu na konfigurirani HTTP slušatelj. Zatim vodimo zapisnik da evidentiramo korisni teret koji HTTP slušatelj prima putem POST metode.

Nakon toga postavlja se prilagođena klasa Java transformatora koja transformira korisni teret nakon primanja poruke:

javni Object transformMessage (poruka MuleMessage, String outputEncoding) baca TransformerException {message.setPayload ("Korisni teret se ovdje prenosi."); message.setProperty ("outboundKey", "outboundpropertyvalue", PropertyScope.OUTBOUND); povratna poruka; }

Klasa transformatora mora se proširiti AbstractMessageTransformer. Također postavljamo odlazno svojstvo unutar klase.

Sad smo već pretvorili korisni teret unutar objekta poruke i to zabilježili u konzolu pomoću zapisnika. Postavljamo varijablu protoka i varijablu sesije.

Napokon, svoj teret šaljemo putem odlaznog VM konektora. Put u VM konektoru određuje krajnju točku primanja:

Poruka koju nosi i transformira početni tok doseže Protok1 kroz ulaznu VM krajnju točku.

Java komponenta dohvaća svojstva odlazaka postavljena prvim protokom i vraća objekt koji postaje korisni teret poruke.

The transformMessage () metoda za ovaj zadatak:

javni Object transformMessage (poruka MuleMessage, String outputEncoding) baca TransformerException {return (String) message.getInboundProperty ("outboundKey"); }

Zatim se varijable protoka i sesije postavljaju na drugi tok. Nakon toga imamo referencu na Protok2 koristeći protok-ref komponenta.

U Protok2, transformirali smo poruku pomoću klase Java komponente i zabilježili je u konzolu. Također smo postavili varijablu protoka F3.

Nakon poziva Protok2 koristeći protok-ref, protok1 pričekat će obradu poruke u Protok2.

Bilo koja varijabla protoka postavljena Protok1 i Protok2 bit će dostupna u oba protoka jer ti tokovi nisu odvojeni nikakvim transportnim preprekama.

Konačno, poruka se putem VM-a šalje natrag HTTP podnositelju zahtjeva. Sve smo VM konfigurirali kao zahtjev-odgovor.

Ovu aplikaciju možemo pozvati od bilo kojeg REST klijenta objavljivanjem bilo kakvih JSON podataka u tijelu. URL će biti lokalnihost: 8081 kako je konfigurirano u HTTP slušatelju.

6. Arhetip Mavena

Možemo izraditi Mule ESB projekt pomoću Mulesoftovog arhetipa Maven.

U Mavenovu postavke.xml datoteku, prvo moramo dodati org.mule.tools grupa dodataka:

 org.mule.tools 

Zatim, moramo dodati a profil oznaka koja kaže gdje bi Maven trebao potražiti artefakte Mulesoft:

 Mule Org true mulesoft-Releases MuleSoft Repository //repository-master.mulesoft.org/releases/ default 

Napokon, projekt možemo stvoriti pomoću mazga-projekt-arhetip: stvoriti:

mvn mule-project-archetype: create -DartifactId = muleesb -DmuleVersion = 3.9.0

Nakon konfiguriranja našeg projekta pomoću možemo stvoriti raspoloživu arhivu mvn paket.

Nakon toga rasporedili bismo arhivu u aplikacije mapa bilo kojeg samostalnog poslužitelja Mule.

7. Samostalni poslužitelj mula putem spremišta Maven tvrtke MuleSoft

Kao što smo upravo napomenuli, projekt koji smo upravo stvorili zahtijeva samostalni poslužitelj Mule.

Ako ga već nemamo, možemo urediti svoj pom.xml da izvučete jedan iz MuleSoft-ovog spremišta Maven:

 org.mule.tools.maven mule-maven-plugin 2.2.1 samostalni 3.9.0 implementacija implementacija implementacija 

8. Zaključak

U ovom smo članku prošli kroz različite potrebne koncepte gradnje kao ESB aplikacije u Muleu. Izradili smo primjer projekta koji ilustrira sve opisane koncepte.

Sada možemo početi stvarati ESB aplikaciju pomoću Anypoint Studija kako bismo udovoljili našim različitim potrebama.

Kao i obično, cjelovit projekt možete pronaći na GitHubu.


$config[zx-auto] not found$config[zx-overlay] not found