Az Mule ESB használatának megkezdése

1. Áttekintés

A Mule ESB egy könnyű Java-alapú Enterprise Service Bus. Lehetővé teszi a fejlesztők számára, hogy több alkalmazást összekapcsoljanak különböző formátumú adatok cseréjével. Az adatokat üzenet formájában továbbítja.

Az ESB-k nagyszerű képességeket kínálnak számos szolgáltatás nyújtásával, például:

  • Szolgáltatás létrehozása és tárolása
  • Szolgáltatási közvetítés
  • Üzenetek átirányítása
  • Adattranszformáció

Hasznosnak találjuk az ESB-ket, ha több alkalmazást kell integrálnunk, vagy ha van ötletünk további alkalmazások felvételére a jövőben.

Az ESB-t egynél több típusú kommunikációs protokoll kezelésére is használják, és amikor az üzenet továbbítási képességekre van szükség.

Hozzunk létre egy minta projektet az 5. szakaszban a AnyPoint Studio amely innen letölthető.

2. Öszvér üzenet felépítése

Egyszerűen fogalmazva, az ESB elsődleges célja közvetíteni a szolgáltatásokat és az üzeneteket különböző végpontokhoz továbbítani. Tehát különféle típusú tartalommal vagy hasznos terheléssel kell foglalkoznia.

Az üzenet struktúrája két részre oszlik:

  • A fejléc, amelyüzenet metaadatokat tartalmaz
  • A hasznos teher, amely üzleti specifikus adatokat tartalmaz

Az üzenet be van ágyazva egy üzenetobjektumba. Kihívhatjuk az üzenetobjektumot a kontextusból. Megváltoztathatjuk tulajdonságait és hasznos terhelését az egyedi Java-összetevők és transzformátorok használatával a Mule-folyamatban.

Minden alkalmazás egy vagy több folyamatból áll.

Egy folyamatban komponenseket használhatunk az üzenetek és azok tulajdonságainak eléréséhez, szűréséhez vagy módosításához.

Például beszerezhetünk egy üzenet példányt a Java komponens segítségével. Ez az alkatrészosztály a Hívható interfész innen: org.mule.api.lifecycle csomag:

public Object onCall (MuleEventContext eventContext) dobja a Kivételt {MuleMessage message = eventContext.getMessage (); message.setPayload ("Az üzenet hasznossága itt megváltozott."); visszaüzenet; }

3. Tulajdonságok és változók

Az üzenet metaadatai tulajdonságokból állnak. A változók egy üzenet adatait jelentik. A tulajdonságok és változók alkalmazását az üzenet életciklusában a hatókörük határozza meg. A tulajdonságok hatókörük alapján kétfélék lehetnek: bejövő és kimenő.

Bejövő tulajdonságok metaadatokat tartalmaz, amelyek megakadályozzák az üzenetek összekeveredését az áramlásokon való áthaladás közben. A bejövő tulajdonságok megváltoztathatatlanok, és a felhasználó nem módosíthatja őket. Csak az áramlás ideje alatt vannak jelen - amint az üzenet kilép az áramlásból, a bejövő tulajdonságok már nincsenek meg.

Kimenő tulajdonságok automatikusan beállíthatja a Mule, vagy a felhasználó beállíthatja őket az áramlás konfigurálásával. Ezek a tulajdonságok változtathatóak. Bejövő tulajdonságokká válnak, amikor egy üzenet a szállítási korlátok átlépése után egy másik folyamatba jut.

Beállíthatjuk és behozhatjuk a kimenő és bejövő tulajdonságokat, ha a kapcsolódó setter és getter módszereket meghívjuk a megfelelő hatókörükben:

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

Az alkalmazásokban kétféle változó deklarálható.

Az egyik áramlási változó, amely lokális az öszvéráramlásnál, és elérhető az áramláson, az alfolyamokon és a privát áramlásokon.

Az egyszer deklarált munkamenet-változók az egész alkalmazásban elérhetővé válnak.

4. Szállítási korlátok és áramlás-ref

A szállítási korlátok HTTP-csatlakozók, virtuális gépek, JMS vagy hasonló csatlakozók, amelyek útvonalakat vagy végpontokat igényelnek az üzenetek továbbításához. Az áramlási változók nem érhetők el a szállítási korlátokon, de a munkamenet-változók az egész folyamatban elérhetőek a projektben.

Amikor alfolyamatot vagy privát áramlatot kell létrehoznunk, akkor a szülő vagy egy másik folyamatra utalhatunk áramlás-ref összetevő. A folyamaváltozók és a munkamenet-változók egyaránt rendelkezésre állnak a részfolyamatokban és a privát folyamatokban, amelyekre hivatkozunk áramlás-ref.

5. Példa projektre

Hozzunk létre egy alkalmazást az Anypoint Studio alkalmazásban, amely több folyamatot tartalmaz, amelyek bejövő és kimenő csatlakozókon keresztül kommunikálnak egymással.

Nézzük meg az első folyamatot:

Konfigurálhatunk egy HTTP figyelőt:

Az áramláskomponenseknek a a belsejében kell lenniük címke. Tehát egy példa több komponensű folyamatra:

A folyamatban hivatkozást adunk egy konfigurált HTTP figyelőre. Ezután naplózót vezetünk a HTTP hallgató által a POST metóduson keresztül kapott hasznos terhelés naplózására.

Ezt követően egy egyedi Java transzformátor osztály kerül elhelyezésre, amely az üzenet fogadása után átalakítja a hasznos terhet:

public Object transformMessage (MuleMessage üzenet, String outputEncoding) eldobja a TransformerException {message.setPayload ("A hasznos terhelés átkerül ide". message.setProperty ("outboundKey", "outboundpropertyvalue", PropertyScope.OUTBOUND); visszaüzenet; }

A transzformátor osztálynak ki kell terjednie AbstractMessageTransformer. Kimenő tulajdonságot is beállítunk az osztályon belül.

Most már átalakítottuk a hasznos terhet az üzenetobjektumon belül, és a naplózó segítségével naplózottuk a konzolon. Folyamatváltozót és munkamenet-változót állítunk be.

Végül kimenő virtuális gép csatlakozón keresztül küldjük a hasznos teherünket. A virtuális gép csatlakozójának útvonala meghatározza a vevő végpontot:

A kezdeti áramlás által hordozott és átalakított üzenet eléri 1. áramlás bejövő virtuális gép végponton keresztül.

A Java komponens beolvassa az első folyamat által beállított kimenő tulajdonságokat, és visszaküldi azt az objektumot, amely az üzenet hasznos terhelésévé válik.

A transformMessage () módszer ehhez a feladathoz:

public Object transformMessage (MuleMessage üzenet, String outputEncoding) dobja a TransformerException {return (String) üzenetet.getInboundProperty ("outboundKey"); }

Ezután a folyamat és a munkamenet változóit a második folyamatra állítjuk. Ezek után kaptunk egy hivatkozást 2. áramlás felhasználásával áramlás-ref összetevő.

Ban ben Flow2, átalakítottuk az üzenetet a Java komponens osztály használatával, és naplóztuk a konzolon. Beállítottunk egy áramlási változót is F3.

Hívás után 2. áramlás felhasználásával flow-ref, Flow1 megvárja az üzenet feldolgozását itt: 2. áramlás.

Bármely áramlási változó beállítva 1. áramlás és 2. áramlás mindkét áramlásban elérhető lesz, mivel ezeket az áramlásokat nem választja el semmilyen szállítási akadály.

Végül az üzenetet virtuális gépeken keresztül visszaküldi a HTTP kérelmezőnek. Az összes virtuális gépet kérés-válaszként konfiguráltuk.

Bármely REST klienstől meghívhatjuk ezt az alkalmazást, ha bármilyen JSON-adatot közzéteszünk a törzsben. Az URL lesz helyi vendéglátó: 8081 a HTTP figyelőben konfigurálva.

6. Maven archetípus

Felépíthetünk egy Mule ESB projektet a Mulesoft Maven archetípusának felhasználásával.

Mavenékben settings.xml fájlt, először hozzá kell adnunk a org.mule.ols bővítménycsoport:

 org.mule.ols 

Ezután hozzá kell adnunk a profil címke, amely azt mondja, hogy Mavennek hol kell keresnie a Mulesoft-tárgyakat:

 A Mule Org true mulesoft-kiadja a MuleSoft Repository //repository-master.mulesoft.org/releases/ default 

Végül felhasználással létrehozhatjuk a projektet öszvér-projekt-archetípus: létrehozás:

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

A projektünk konfigurálása után létrehozhatunk egy telepíthető archívumot a mvn csomag.

Ezt követően telepítenénk az archívumot a alkalmazások bármely önálló Mule szerver mappája.

7. Önálló Mule Server a MuleSoft Maven tárházán keresztül

Mint az imént megjegyeztük, az imént létrehozott projekthez önálló Mule-kiszolgálóra van szükség.

Ha még nincs ilyenünk, akkor szerkeszthetjük a fájlunkat pom.xml hogy elővegy egyet a MuleSoft Maven tárából:

 org.mule.tools.maven mule-maven-plugin 2.2.1 önálló 3.9.0 telepítés telepítés telepítése 

8. Következtetés

Ebben a cikkben különböző szükséges koncepciókat dolgoztunk át az ESB-alkalmazásként az Ötletben a Mule-ban. Hoztunk létre egy minta projektet, amely bemutatja az összes leírt fogalmat.

Most megkezdhetjük az ESB alkalmazás létrehozását az Anypoint Studio segítségével a különféle igényeink kielégítésére.

Szokás szerint a teljes projekt megtalálható a GitHub oldalon.

1. Áttekintés

A Mule ESB egy könnyű Java-alapú Enterprise Service Bus. Lehetővé teszi a fejlesztők számára, hogy több alkalmazást összekapcsoljanak különböző formátumú adatok cseréjével. Az adatokat üzenet formájában továbbítja.

Az ESB-k nagyszerű képességeket kínálnak számos szolgáltatás nyújtásával, például:

  • Szolgáltatás létrehozása és tárolása
  • Szolgáltatási közvetítés
  • Üzenetek átirányítása
  • Adattranszformáció

Hasznosnak találjuk az ESB-ket, ha több alkalmazást kell integrálnunk, vagy ha van elképzelésünk a jövőben további alkalmazások hozzáadásáról.

Az ESB-t egynél több típusú kommunikációs protokoll kezelésére is használják, és amikor az üzenet továbbítási képességekre van szükség.

Hozzunk létre egy minta projektet az 5. szakaszban a AnyPoint Studio amely innen letölthető.

2. Öszvér üzenetek felépítése

Egyszerűen fogalmazva, az ESB elsődleges célja a szolgáltatások közötti közvetítés és az üzenetek továbbítása a különböző végpontokhoz. Tehát különféle típusú tartalommal vagy hasznos terheléssel kell foglalkoznia.

Az üzenet struktúrája két részre oszlik:

  • A fejléc, amelyüzenet metaadatokat tartalmaz
  • A hasznos teher, amely üzleti specifikus adatokat tartalmaz

Az üzenet be van ágyazva egy üzenetobjektumba. Kihívhatjuk az üzenetobjektumot a kontextusból. Megváltoztathatjuk tulajdonságait és hasznos terhelését az egyedi Java-összetevők és transzformátorok használatával a Mule-folyamatban.

Minden alkalmazás egy vagy több folyamatból áll.

Egy folyamatban komponenseket használhatunk egy üzenet és annak különböző tulajdonságainak elérésére, szűrésére vagy módosítására.

Például beszerezhetünk egy üzenet példányt a Java komponens segítségével. Ez az alkatrészosztály a Hívható interfész innen: org.mule.api.lifecycle csomag:

public Object onCall (MuleEventContext eventContext) dobja a Kivételt {MuleMessage message = eventContext.getMessage (); message.setPayload ("Az üzenet hasznossága itt megváltozott."); visszaüzenet; }

3. Tulajdonságok és változók

Az üzenet metaadatai tulajdonságokból állnak. A változók egy üzenet adatait jelentik. A tulajdonságok és változók alkalmazását az üzenet életciklusában a hatókörük határozza meg. A tulajdonságok hatókörük alapján kétfélék lehetnek: bejövő és kimenő.

Bejövő tulajdonságok metaadatokat tartalmaz, amelyek megakadályozzák az üzenetek összekeveredését az áramlásokon való áthaladás közben. A bejövő tulajdonságok megváltoztathatatlanok, és a felhasználó nem módosíthatja őket. Csak az áramlás ideje alatt vannak jelen - amint az üzenet kilép az áramlásból, a bejövő tulajdonságok már nincsenek meg.

Kimenő tulajdonságok automatikusan beállíthatja a Mule, vagy a felhasználó beállíthatja őket az áramlás konfigurálásával. Ezek a tulajdonságok változtathatóak. Bejövő tulajdonságokká válnak, amikor egy üzenet a szállítási korlátok átlépése után egy másik folyamatba jut.

Beállíthatjuk és behozhatjuk a kimenő és bejövő tulajdonságokat, ha a kapcsolódó setter és getter módszereket meghívjuk a megfelelő hatókörükben:

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

Az alkalmazásokban kétféle változó deklarálható.

Az egyik áramlási változó, amely lokális az öszvéráramlásnál, és elérhető az áramláson, az alfolyamokon és a privát áramlásokon.

Az egyszer deklarált munkamenet-változók az egész alkalmazásban elérhetővé válnak.

4. Szállítási korlátok és áramlás-ref

A szállítási korlátok HTTP-csatlakozók, virtuális gépek, JMS vagy hasonló csatlakozók, amelyek útvonalakat vagy végpontokat igényelnek az üzenetek továbbításához. Az áramlási változók nem érhetők el a szállítási korlátokon, de a munkamenet-változók a projektben minden folyamatban rendelkezésre állnak.

Amikor alfolyamatot vagy privát áramlatot kell létrehoznunk, akkor a szülő vagy egy másik folyamatra utalhatunk áramlás-ref összetevő. A folyamaváltozók és a munkamenet-változók egyaránt rendelkezésre állnak a részfolyamatokban és a privát folyamatokban, amelyekre hivatkozunk áramlás-ref.

5. Példa projektre

Hozzunk létre egy alkalmazást az Anypoint Studio alkalmazásban, amely több folyamatot tartalmaz, amelyek bejövő és kimenő csatlakozókon keresztül kommunikálnak egymással.

Nézzük meg az első folyamatot:

Konfigurálhatunk egy HTTP figyelőt:

Az áramláskomponenseknek a a belsejében kell lenniük címke. Tehát egy példa több komponensű folyamatra:

A folyamatban hivatkozást adunk egy konfigurált HTTP figyelőre. Ezután naplózót vezetünk a HTTP hallgató által a POST metóduson keresztül kapott hasznos terhelés naplózására.

Ezt követően egy egyedi Java transzformátor osztály kerül elhelyezésre, amely az üzenet fogadása után átalakítja a hasznos terhet:

public Object transformMessage (MuleMessage üzenet, String outputEncoding) dobja a TransformerException {message.setPayload ("A hasznos terhelés átkerül ide."); message.setProperty ("outboundKey", "outboundpropertyvalue", PropertyScope.OUTBOUND); visszaüzenet; }

A transzformátor osztálynak ki kell terjednie AbstractMessageTransformer. Kimenő tulajdonságot is beállítunk az osztályon belül.

Most már átalakítottuk a hasznos terhet az üzenetobjektumon belül, és a naplózó segítségével naplózottuk a konzolon. Folyamatváltozót és munkamenet-változót állítunk be.

Végül kimenő virtuális gép csatlakozón keresztül küldjük a hasznos teherünket. A virtuális gép csatlakozójának útvonala meghatározza a vevő végpontot:

A kezdeti áramlás által hordozott és átalakított üzenet eléri 1. áramlás bejövő virtuális gép végponton keresztül.

A Java komponens beolvassa az első folyamat által beállított kimenő tulajdonságokat, és visszaadja azt az objektumot, amely az üzenet hasznos terhelésévé válik.

A transformMessage () módszer ehhez a feladathoz:

public Object transformMessage (MuleMessage üzenet, String outputEncoding) dobja a TransformerException {return (String) üzenetet.getInboundProperty ("outboundKey"); }

Ezután a folyamat és a munkamenet változóit a második folyamatra állítjuk. Ezek után kaptunk egy hivatkozást 2. áramlás felhasználásával áramlás-ref összetevő.

Ban ben Flow2, átalakítottuk az üzenetet a Java komponens osztály használatával, és naplóztuk a konzolon. Beállítottunk egy áramlási változót is F3.

Hívás után 2. áramlás felhasználásával flow-ref, Flow1 megvárja az üzenet feldolgozását itt: 2. áramlás.

Bármely áramlási változó beállítva 1. áramlás és 2. áramlás mindkét áramlásban elérhető lesz, mivel ezeket az áramlásokat nem választja el semmilyen szállítási akadály.

Végül az üzenetet virtuális gépeken keresztül visszaküldi a HTTP kérelmezőnek. Az összes virtuális gépet kérés-válaszként konfiguráltuk.

Bármely REST klienstől meghívhatjuk ezt az alkalmazást, ha bármilyen JSON-adatot közzéteszünk a törzsben. Az URL lesz helyi vendéglátó: 8081 a HTTP figyelőben konfigurálva.

6. Maven archetípus

Felépíthetünk egy Mule ESB projektet a Mulesoft Maven archetípusának felhasználásával.

Mavenékben settings.xml fájlt, először hozzá kell adnunk a org.mule.ols bővítménycsoport:

 org.mule.ols 

Ezután hozzá kell adnunk a profil címke, amely azt mondja, hogy Mavennek hol kell keresnie a Mulesoft-tárgyakat:

 A Mule Org true mulesoft-kiadja a MuleSoft Repository //repository-master.mulesoft.org/releases/ default 

Végül felhasználással létrehozhatjuk a projektet öszvér-projekt-archetípus: létrehozás:

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

A projektünk konfigurálása után létrehozhatunk egy telepíthető archívumot a mvn csomag.

Ezt követően telepítenénk az archívumot a alkalmazások bármely önálló Mule-kiszolgáló mappája.

7. Önálló Mule Server a MuleSoft Maven tárházán keresztül

Mint az imént megjegyeztük, az imént létrehozott projekthez önálló Mule-kiszolgálóra van szükség.

Ha még nincs ilyenünk, akkor szerkeszthetjük a sajátunkat pom.xml hogy elővegy egyet a MuleSoft Maven tárából:

 org.mule.tools.maven mule-maven-plugin 2.2.1 önálló 3.9.0 telepítés telepítés telepítése 

8. Következtetés

Ebben a cikkben különféle szükséges koncepciókat dolgoztunk át az építés ESB-alkalmazásként a Mule-ban. Hoztunk létre egy minta projektet, amely bemutatja az összes leírt fogalmat.

Most megkezdhetjük az ESB alkalmazás létrehozását az Anypoint Studio segítségével a különféle igényeink kielégítésére.

Szokás szerint a teljes projekt megtalálható a GitHub oldalon.


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