Začíname s programom Mule ESB

1. Prehľad

Mule ESB je ľahká podniková autobusová doprava založená na prostredí Java. Umožňuje vývojárom prepojiť viac aplikácií vzájomnou výmenou údajov v rôznych formátoch. Nesie údaje vo forme správy.

ESB ponúkajú výkonné funkcie tým, že poskytujú množstvo služieb, ako napríklad:

  • Tvorba služieb a hosting
  • Sprostredkovanie služieb
  • Smerovanie správ
  • Transformácia údajov

ESB považujeme za užitočné, ak potrebujeme integrovať viac aplikácií dohromady, alebo ak máme v úmysle pridať ďalšie aplikácie v budúcnosti.

ESB sa tiež používa na prácu s viac ako jedným typom komunikačného protokolu a vtedy, keď sú potrebné možnosti smerovania správ.

Vytvorme si ukážkový projekt v časti 5 pomocou Štúdio AnyPoint ktorý je k dispozícii na stiahnutie tu.

2. Štruktúra správy mul

Jednoducho povedané, primárnym účelom ESB je sprostredkovanie medzi službami a smerovanie správ do rôznych koncových bodov. Potrebuje teda vysporiadať sa s rôznymi typmi obsahu alebo užitočným zaťažením.

Štruktúra správy je rozdelená do dvoch častí:

  • Hlavička, ktoráobsahuje metaúdaje správy
  • Užitočné zaťaženie, ktoré obsahuje údaje týkajúce sa konkrétneho podniku

Správa je vložená do objektu správy. Objekt správy môžeme načítať z kontextu. Môžeme zmeniť jeho vlastnosti a užitočné zaťaženie pomocou vlastných komponentov Java a transformátorov vo vnútri toku Mule.

Každá aplikácia pozostáva z jedného alebo viacerých tokov.

V toku môžeme použiť komponenty na prístup, filtrovanie alebo zmenu správy a jej rôznych vlastností.

Napríklad môžeme získať inštanciu správy pomocou komponentu Java. Táto trieda komponentov implementuje a Vyvolávateľná rozhranie z org.mule.api.lifecycle balenie:

public Object onCall (MuleEventContext eventContext) vyvolá výnimku {MuleMessage message = eventContext.getMessage (); message.setPayload ("Tu sa zmení užitočné zaťaženie správy."); spätná správa; }

3. Vlastnosti a premenné

Metadáta správy pozostávajú z vlastností. Premenné predstavujú údaje o správe. Spôsoby použitia vlastností a premenných počas celého životného cyklu správy sú definované ich rozsahmi. Vlastnosti môžu byť dva typy založené na ich rozsahu: prichádzajúce a odchádzajúce.

Prichádzajúce vlastnosti obsahujú metadáta, ktoré zabraňujú kódovaniu správ pri prechode naprieč tokmi. Prichádzajúce vlastnosti sú nemenné a používateľ ich nemôže meniť. Sú prítomné iba po dobu toku - keď správa opustí tok, prichádzajúce vlastnosti už nie sú k dispozícii.

Odchádzajúce vlastnosti môžu byť nastavené automaticky programom Mule alebo ich môže používateľ nastaviť pomocou konfigurácie toku. Tieto vlastnosti sú premenlivé. Stávajú sa prichádzajúcimi vlastnosťami, keď správa prekoná dopravné bariéry a vstúpi do iného toku.

Môžeme nastaviť a získať odchádzajúce a prichádzajúce vlastnosti volaním priradených metód setter a getter v ich príslušných rozsahoch:

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

V aplikáciách sú k dispozícii dva typy premenných, ktoré je možné deklarovať.

Jednou z nich je premenná toku, ktorá je lokálna pre tok Mule a je k dispozícii v rámci toku, čiastkových tokov a súkromných tokov.

Raz deklarované premenné relácie budú dostupné v celej aplikácii.

4. Prepravné bariéry a prietokový ref

Transportné bariéry sú konektory HTTP, VM, JMS alebo podobné konektory, ktoré vyžadujú smerovanie alebo cestu koncových bodov správ. Premenné toku nie sú k dispozícii cez dopravné bariéry, ale premenné relácie sú k dispozícii v rámci projektu vo všetkých tokoch.

Keď potrebujeme vytvoriť čiastkový alebo súkromný tok, môžeme sa odvolávať na tok z nadradeného alebo iného toku pomocou prietokový ref zložka. Premenné toku aj premenné relácie sú k dispozícii v podtekoch a súkromných tokoch, na ktoré sa odkazuje pomocou prietokový ref.

5. Ukážkový projekt

Vytvorme aplikáciu v Anypoint Studio, ktorá obsahuje viac tokov, ktoré medzi sebou komunikujú prostredníctvom prichádzajúcich a odchádzajúcich konektorov.

Pozrime sa na prvý tok:

Môžeme nakonfigurovať poslucháča protokolu HTTP ako:

Súčasti prietoku musia byť vo vnútri a značka. Príklad toku s viacerými komponentmi je:

Vo vnútri toku poskytujeme odkaz na nakonfigurovaného poslucháča HTTP. Potom vedieme záznamník, ktorý zaznamenáva užitočné zaťaženie, ktoré prijímač HTTP prijíma metódou POST.

Potom sa umiestni vlastná trieda transformátorov Java, ktorá po prijatí správy transformuje užitočné zaťaženie:

verejný objekt transformMessage (správa MuleMessage, reťazec outputEncoding) hodí TransformerException {message.setPayload ("Payload je prenesené sem."); message.setProperty ("outboundKey", "outboundpropertyvalue", PropertyScope.OUTBOUND); spätná správa; }

Trieda transformátorov sa musí rozšíriť AbstractMessageTransformer. Nastavujeme tiež odchádzajúcu vlastnosť v rámci triedy.

Teraz sme už previedli užitočné zaťaženie vo vnútri objektu správy a zaznamenali sme to v konzole pomocou záznamníka. Nastavujeme premennú toku a premennú relácie.

Nakoniec odosielame naše užitočné zaťaženie cez odchádzajúci konektor VM. Cesta v konektore VM určuje prijímajúci koncový bod:

Správa nesená a transformovaná počiatočným tokom dosiahne Prietok1 cez prichádzajúci koncový bod VM.

Komponent Java načítava odchádzajúce vlastnosti nastavené prvým tokom a vracia objekt, ktorý sa stáva užitočným zaťažením správy.

The transformMessage () metóda pre túto úlohu:

public Object transformMessage (správa MuleMessage, String outputEncoding) hodí TransformerException {return (String) message.getInboundProperty ("outboundKey"); }

Potom sa premenné toku a relácie nastavia na druhý tok. Potom máme odkaz na Flow2 použitím prietokový ref zložka.

V Flow2, správu sme transformovali pomocou triedy komponentov Java a prihlásili sme ju do konzoly. Nastavili sme tiež premennú prietoku F3.

Po zavolaní Flow2 použitím flow-ref, Flow1 počká na spracovanie správy v Flow2.

Akákoľvek premenná toku nastavená v Prietok1 a Flow2 bude k dispozícii v oboch tokoch, pretože tieto toky nie sú oddelené žiadnymi dopravnými prekážkami.

Nakoniec sa správa odošle späť žiadateľovi HTTP prostredníctvom virtuálnych počítačov. Nakonfigurovali sme všetky virtuálne počítače ako požiadavku-odpoveď.

Túto aplikáciu môžeme vyvolať z ktoréhokoľvek klienta REST zverejnením akýchkoľvek údajov JSON v tele. URL bude localhost: 8081 ako je nakonfigurované v poslucháčovi HTTP.

6. Mavenský archetyp

Môžeme vytvoriť projekt Mule ESB pomocou archetypu Maven spoločnosti Mulesoft.

V Mavenovej nastavenia.xml súbor, najskôr musíme pridať org.mule.nastroje skupina doplnkov:

 org.mule.nastroje 

Potom musíme pridať a profilu značka, ktorá hovorí, kde by mal Maven hľadať artefakty Mulesoft:

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

Na záver môžeme projekt vytvoriť pomocou mulica-projekt-archetyp: vytvoriť:

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

Po nakonfigurovaní nášho projektu môžeme vytvoriť nasaditeľný archív pomocou balíček mvn.

Potom by sme archív nasadili do aplikácie priečinok ľubovoľného samostatného servera Mule.

7. Samostatný server Mule prostredníctvom úložiska Maven spoločnosti MuleSoft

Ako sme už poznamenali, projekt, ktorý sme práve vytvorili, vyžaduje samostatný server Mule.

Ak ešte žiadny nemáme, môžeme upraviť náš pom.xml vytiahnuť jeden z úložiska Maven od MuleSoft:

 org.mule.tools.maven mule-maven-plugin 2.2.1 samostatný 3.9.0 nasadiť nasadiť nasadiť 

8. Záver

V tomto článku sme prešli rôznymi nevyhnutnými konceptmi budovania ako aplikácie ESB v aplikácii Mule. Vytvorili sme vzorový projekt ilustrujúci všetky opísané koncepty.

Teraz môžeme začať vytvárať aplikáciu ESB pomocou Anypoint Studio, aby sme splnili naše rôzne potreby.

Celý projekt ako obvykle nájdete na GitHub.

1. Prehľad

Mule ESB je ľahká podniková autobusová doprava založená na prostredí Java. Umožňuje vývojárom prepojiť viac aplikácií vzájomnou výmenou údajov v rôznych formátoch. Nesie údaje vo forme správy.

ESB ponúkajú výkonné funkcie tým, že poskytujú množstvo služieb, ako napríklad:

  • Tvorba služieb a hosting
  • Sprostredkovanie služieb
  • Smerovanie správ
  • Transformácia údajov

ESB považujeme za užitočné, ak potrebujeme integrovať viac aplikácií dohromady, alebo ak máme v budúcnosti predstavu o pridaní ďalších aplikácií.

ESB sa tiež používa na prácu s viac ako jedným typom komunikačného protokolu a vtedy, keď sú potrebné možnosti smerovania správ.

Vytvorme si ukážkový projekt v časti 5 pomocou Štúdio AnyPoint ktorý je k dispozícii na stiahnutie tu.

2. Štruktúra správy mul

Jednoducho povedané, primárnym účelom ESB je sprostredkovanie medzi službami a smerovanie správ do rôznych koncových bodov. Potrebuje teda vysporiadať sa s rôznymi typmi obsahu alebo užitočným zaťažením.

Štruktúra správy je rozdelená do dvoch častí:

  • Hlavička, ktoráobsahuje metaúdaje správy
  • Užitočné zaťaženie, ktoré obsahuje údaje týkajúce sa konkrétneho podniku

Správa je vložená do objektu správy. Objekt správy môžeme načítať z kontextu. Môžeme zmeniť jeho vlastnosti a užitočné zaťaženie pomocou vlastných komponentov Java a transformátorov vo vnútri toku Mule.

Každá aplikácia pozostáva z jedného alebo viacerých tokov.

V toku môžeme použiť komponenty na prístup, filtrovanie alebo zmenu správy a jej rôznych vlastností.

Napríklad môžeme získať inštanciu správy pomocou komponentu Java. Táto trieda komponentov implementuje a Vyvolávateľná rozhranie z org.mule.api.lifecycle balenie:

public Object onCall (MuleEventContext eventContext) vyvolá výnimku {MuleMessage message = eventContext.getMessage (); message.setPayload ("Tu sa zmení užitočné zaťaženie správy."); spätná správa; }

3. Vlastnosti a premenné

Metadáta správy pozostávajú z vlastností. Premenné predstavujú údaje o správe. Spôsoby použitia vlastností a premenných v rámci životného cyklu správy je definované ich rozsahmi. Vlastnosti môžu byť dva typy založené na ich rozsahu: prichádzajúce a odchádzajúce.

Prichádzajúce vlastnosti obsahujú metadáta, ktoré zabraňujú kódovaniu správ pri prechode naprieč tokmi. Prichádzajúce vlastnosti sú nemenné a používateľ ich nemôže meniť. Sú prítomné iba po dobu toku - keď správa opustí tok, prichádzajúce vlastnosti tu už nie sú.

Odchádzajúce vlastnosti môžu byť nastavené automaticky programom Mule alebo ich môže používateľ nastaviť pomocou konfigurácie toku. Tieto vlastnosti sú premenlivé. Stávajú sa prichádzajúcimi vlastnosťami, keď správa prekoná dopravné bariéry a vstúpi do iného toku.

Môžeme nastaviť a získať odchádzajúce a prichádzajúce vlastnosti volaním priradených metód setter a getter v ich príslušných rozsahoch:

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

V aplikáciách sú k dispozícii dva typy premenných, ktoré je možné deklarovať.

Jednou z nich je premenná toku, ktorá je lokálna pre tok Mule a je k dispozícii v rámci toku, čiastkových tokov a súkromných tokov.

Raz deklarované premenné relácie budú dostupné v celej aplikácii.

4. Prepravné bariéry a prietokový ref

Transportné bariéry sú konektory HTTP, VM, JMS alebo podobné konektory, ktoré vyžadujú smerovanie alebo cestu koncových bodov správ. Premenné toku nie sú k dispozícii cez dopravné bariéry, ale premenné relácie sú k dispozícii v rámci projektu vo všetkých tokoch.

Keď potrebujeme vytvoriť čiastkový alebo súkromný tok, môžeme sa odvolávať na tok z nadradeného alebo iného toku pomocou prietokový ref zložka. Premenné toku aj premenné relácie sú k dispozícii v podtekoch a súkromných tokoch, na ktoré sa odkazuje pomocou prietokový ref.

5. Ukážkový projekt

Vytvorme aplikáciu v Anypoint Studio, ktorá obsahuje viac tokov, ktoré medzi sebou komunikujú prostredníctvom prichádzajúcich a odchádzajúcich konektorov.

Pozrime sa na prvý tok:

Môžeme nakonfigurovať poslucháča protokolu HTTP ako:

Súčasti prietoku musia byť vo vnútri a značka. Príklad toku s viacerými komponentmi je:

Vo vnútri toku poskytujeme odkaz na nakonfigurovaného poslucháča HTTP. Potom vedieme záznamník, ktorý zaznamenáva užitočné zaťaženie, ktoré prijímač HTTP prijíma metódou POST.

Potom sa umiestni vlastná trieda transformátorov Java, ktorá po prijatí správy transformuje užitočné zaťaženie:

verejný objekt transformMessage (správa MuleMessage, reťazec outputEncoding) hodí TransformerException {message.setPayload ("Payload je prenesené sem."); message.setProperty ("outboundKey", "outboundpropertyvalue", PropertyScope.OUTBOUND); spätná správa; }

Trieda transformátorov sa musí rozšíriť AbstractMessageTransformer. Nastavujeme tiež odchádzajúcu vlastnosť v rámci triedy.

Teraz sme už previedli užitočné zaťaženie vo vnútri objektu správy a zaznamenali sme to v konzole pomocou záznamníka. Nastavujeme premennú toku a premennú relácie.

Nakoniec odosielame naše užitočné zaťaženie cez odchádzajúci konektor VM. Cesta v konektore VM určuje prijímajúci koncový bod:

Správa nesená a transformovaná počiatočným tokom dosiahne Prietok1 cez prichádzajúci koncový bod VM.

Komponent Java načítava odchádzajúce vlastnosti nastavené prvým tokom a vracia objekt, ktorý sa stáva užitočným zaťažením správy.

The transformMessage () metóda pre túto úlohu:

public Object transformMessage (správa MuleMessage, String outputEncoding) hodí TransformerException {return (String) message.getInboundProperty ("outboundKey"); }

Potom sa premenné toku a relácie nastavia na druhý tok. Potom máme odkaz na Flow2 použitím prietokový ref zložka.

V Flow2, správu sme transformovali pomocou triedy komponentov Java a prihlásili sme ju do konzoly. Nastavili sme tiež premennú prietoku F3.

Po zavolaní Flow2 použitím flow-ref, Flow1 počká na spracovanie správy v Flow2.

Akákoľvek premenná toku nastavená v Prietok1 a Flow2 bude k dispozícii v oboch tokoch, pretože tieto toky nie sú oddelené žiadnymi dopravnými prekážkami.

Nakoniec sa správa odošle späť žiadateľovi HTTP prostredníctvom virtuálnych počítačov. Nakonfigurovali sme všetky virtuálne počítače ako požiadavku-odpoveď.

Túto aplikáciu môžeme vyvolať od ľubovoľného klienta REST zverejnením akýchkoľvek údajov JSON v tele. URL bude localhost: 8081 ako je nakonfigurované v poslucháčovi HTTP.

6. Mavenský archetyp

Môžeme vytvoriť projekt Mule ESB pomocou archetypu Maven spoločnosti Mulesoft.

V Mavenovej nastavenia.xml súbor, najskôr musíme pridať org.mule.nastroje skupina doplnkov:

 org.mule.nastroje 

Potom musíme pridať a profilu značka, ktorá hovorí, kde by mal Maven hľadať artefakty Mulesoft:

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

Na záver môžeme projekt vytvoriť pomocou mule-projekt-archetyp: vytvoriť:

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

Po nakonfigurovaní nášho projektu môžeme vytvoriť nasaditeľný archív pomocou balíček mvn.

Potom by sme archív nasadili do aplikácie priečinok ľubovoľného samostatného servera Mule.

7. Samostatný server Mule prostredníctvom úložiska Maven spoločnosti MuleSoft

Ako sme už poznamenali, projekt, ktorý sme práve vytvorili, vyžaduje samostatný server Mule.

Ak ešte žiadny nemáme, môžeme upraviť náš pom.xml vytiahnuť jeden z úložiska Maven spoločnosti MuleSoft:

 org.mule.tools.maven mule-maven-plugin 2.2.1 samostatný 3.9.0 nasadiť nasadiť nasadiť 

8. Záver

V tomto článku sme prešli rôznymi nevyhnutnými konceptmi budovania ako aplikácie ESB v aplikácii Mule. Vytvorili sme vzorový projekt ilustrujúci všetky opísané koncepty.

Teraz môžeme začať vytvárať aplikáciu ESB pomocou Anypoint Studio, aby sme splnili naše rôzne potreby.

Celý projekt ako obvykle nájdete na GitHub.


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