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.