MuleSoft - Szybki przewodnik
ESB oznacza Enterprise Service Busktóry jest w zasadzie narzędziem pośredniczącym do integracji różnych aplikacji razem za pośrednictwem infrastruktury podobnej do magistrali. Zasadniczo jest to architektura zaprojektowana w celu zapewnienia jednolitego sposobu przenoszenia pracy między zintegrowanymi aplikacjami. W ten sposób za pomocą architektury ESB możemy łączyć różne aplikacje poprzez magistralę komunikacyjną i umożliwiać im komunikację bez zależności od siebie.
Wdrażanie ESB
Głównym celem architektury ESB jest oddzielenie systemów od siebie i umożliwienie im komunikacji w stabilny i kontrolowany sposób. Implementację ESB można wykonać za pomocą‘Bus’ i ‘Adapter’ w następujący sposób -
Koncepcja „magistrali”, którą osiąga się za pośrednictwem serwera przesyłania komunikatów, takiego jak JMS lub AMQP, jest używana do oddzielania od siebie różnych aplikacji.
Pomiędzy aplikacjami a magistralą używana jest koncepcja „adaptera” odpowiedzialnego za komunikację z aplikacją zaplecza i transformację danych z formatu aplikacji do formatu magistrali.
Dane lub wiadomości przesyłane z jednej aplikacji do drugiej przez magistralę mają format kanoniczny, co oznacza, że byłby jeden spójny format wiadomości.
Adapter może również wykonywać inne czynności, takie jak zabezpieczenia, monitorowanie, obsługa błędów i zarządzanie routingiem komunikatów.
Zasady przewodnie ESB
Możemy nazwać te zasady podstawowymi zasadami integracji. Są następujące -
Orchestration - Integracja dwóch lub więcej usług w celu uzyskania synchronizacji między danymi a procesem.
Transformation - Przekształcanie danych z formatu kanonicznego do formatu specyficznego dla aplikacji.
Transportation - Obsługa negocjacji protokołów między formatami takimi jak FTP, HTTP, JMS itp.
Mediation - Zapewnienie wielu interfejsów do obsługi wielu wersji usługi.
Non-functional consistency - Zapewnienie mechanizmu zarządzania transakcjami i bezpieczeństwem również.
Potrzeba ESB
Architektura ESB umożliwia nam integrację różnych aplikacji, w których każda aplikacja może się za jej pośrednictwem komunikować. Oto kilka wskazówek, kiedy używać ESB -
Integrating two or more applications - Zastosowanie architektury ESB jest korzystne, gdy istnieje potrzeba integracji dwóch lub więcej usług lub aplikacji.
Integration of more applications in future - Załóżmy, że jeśli w przyszłości będziemy chcieli dodać więcej usług lub aplikacji, można to łatwo zrobić za pomocą architektury ESB.
Using multiple protocols - W przypadku, gdy potrzebujemy użyć wielu protokołów, takich jak HTTP, FTP, JMS itp., ESB jest właściwą opcją.
Message routing - Możemy użyć ESB w przypadku, gdy wymagamy kierowania wiadomości na podstawie treści wiadomości i innych podobnych parametrów.
Composition and consumption - ESB może być używany, jeśli musimy publikować usługi dotyczące składu i konsumpcji.
Integracja P2P a integracja ESB
Wraz ze wzrostem liczby aplikacji dużym pytaniem, które stawiali deweloperzy było to, jak połączyć różne aplikacje? Sytuacja została rozwiązana przez ręczne zakodowanie połączenia między różnymi aplikacjami. To się nazywapoint-to-point integration.
Rigidityjest najbardziej oczywistą wadą integracji punkt-punkt. Złożoność rośnie wraz ze wzrostem liczby połączeń i interfejsów. Wady integracji P-2-P prowadzą nas do integracji ESB.
ESB to bardziej elastyczne podejście do integracji aplikacji. Hermetyzuje i eksponuje każdą funkcjonalność aplikacji jako zestaw dyskretnych możliwości wielokrotnego użytku. Żadna aplikacja nie integruje się bezpośrednio z innymi, zamiast tego integrują się przez ESB, jak pokazano poniżej -
Do zarządzania integracją ESB składa się z dwóch następujących komponentów -
Service Registry- Mule ESB posiada Rejestr usług / Repozytorium, w którym wszystkie usługi udostępnione w ESB są publikowane i rejestrowane. Działa jako punkt odkrywania, z którego można korzystać z usług i możliwości innych aplikacji.
Centralized Administration - Jak sama nazwa wskazuje, zapewnia widok transakcyjnych przepływów wydajności interakcji zachodzących wewnątrz ESB.
ESB Functionality- Skrót VETRO jest zwykle używany do podsumowania funkcjonalności ESB. Jest to następujące -
V(Validate) - jak sama nazwa wskazuje, sprawdza poprawność schematu. Wymaga parsera walidującego i aktualnego schematu. Jednym z przykładów jest dokument XML potwierdzający aktualność schematu.
E(Wzbogać) - dodaje dodatkowe dane do wiadomości. Celem jest uczynienie wiadomości bardziej znaczącą i użyteczną dla usługi docelowej.
T(Transform) - Konwertuje strukturę danych do formatu kanonicznego lub z formatu kanonicznego. Przykładami są konwersja daty / godziny, waluty itp.
R(Routing) - kieruje wiadomość i działa jako strażnik punktu końcowego usługi.
O(Operate) - Głównym zadaniem tej funkcji jest wywołanie usługi docelowej lub interakcja z aplikacją docelową. Działają na zapleczu.
Wzorzec VETRO zapewnia ogólną elastyczność integracji i gwarantuje, że tylko spójne i sprawdzone dane będą kierowane przez ESB.
Co to jest Mule ESB?
Mule ESB to lekka i wysoce skalowalna oparta na Javie magistrala usług korporacyjnych (ESB) i platforma integracyjna dostarczana przez MuleSoft. Mule ESB umożliwia programistom łatwe i szybkie łączenie aplikacji. Niezależnie od różnych technologii wykorzystywanych przez aplikacje, Mule ESB umożliwia łatwą integrację aplikacji, umożliwiając im wymianę danych. Mule ESB ma następujące dwie edycje -
- Wydanie społecznościowe
- Wersja Enterprise
Zaletą Mule ESB jest to, że możemy łatwo uaktualnić ze społeczności Mule ESB do Mule ESB enterprise, ponieważ obie wersje są zbudowane na wspólnej bazie kodu.
Funkcje i możliwości Mule ESB
Mule ESB posiada następujące funkcje -
- Ma prosty projekt graficzny typu „przeciągnij i upuść”.
- Mule ESB umożliwia wizualne mapowanie i transformację danych.
- Użytkownik może otrzymać setki gotowych, certyfikowanych złączy.
- Scentralizowane monitorowanie i administracja.
- Zapewnia solidne funkcje egzekwowania bezpieczeństwa w przedsiębiorstwie.
- Zapewnia łatwość zarządzania API.
- Dostępna jest bezpieczna brama danych do połączeń w chmurze / lokalnie.
- Zapewnia rejestr usług, w którym wszystkie usługi udostępnione w ESB są publikowane i rejestrowane.
- Użytkownicy mogą mieć kontrolę za pośrednictwem internetowej konsoli zarządzania.
- Szybkie debugowanie można przeprowadzić za pomocą analizatora przepływu usług.
Motywacjami stojącymi za projektem Mule były:
aby ułatwić programistom pracę,
potrzeba lekkiego i modułowego rozwiązania, które można by skalować od struktury obsługi wiadomości na poziomie aplikacji do wysoce dystrybuowalnej struktury obejmującej całe przedsiębiorstwo.
Mule ESB został zaprojektowany jako platforma sterowana zdarzeniami i programistyczna. Jest sterowany zdarzeniami, ponieważ jest połączony z ujednoliconą reprezentacją komunikatów i może być rozszerzany za pomocą podłączanych modułów. Jest programistyczny, ponieważ programiści mogą łatwo zaimplementować pewne dodatkowe zachowania, takie jak przetwarzanie określonych komunikatów lub niestandardowa transformacja danych.
Historia
Historyczna perspektywa projektu Mule jest następująca -
Projekt SourceForge
Projekt Mule został uruchomiony jako projekt SourceForge w kwietniu 2003 roku, a po 2 latach jego pierwsza wersja została wydana i przeniesiona do CodeHaus. Interfejs API Universal Message Object (UMO) stanowił rdzeń jego architektury. Ideą UMO API było ujednolicenie logiki przy jednoczesnym odizolowaniu ich od podstawowych transportów.
Wersja 1.0.0
Został wydany w kwietniu 2005 roku zawierający liczne transporty. Głównym celem wielu innych wersji, które nastąpiły, było debugowanie i dodawanie nowych funkcji.
Wersja 2.0 (przyjęcie wiosny 2)
Spring 2 jako struktura konfiguracji i okablowania została przyjęta w Mule 2, ale okazało się, że jest to poważna przeróbka z powodu braku wyrazistości wymaganej konfiguracji XML. Ten problem został rozwiązany po wprowadzeniu konfiguracji opartej na schemacie XML w wersji Spring 2.
Budowanie z Mavenem
Największym ulepszeniem, które uprościło korzystanie z Mule, zarówno na etapie tworzenia, jak i wdrażania, było użycie Mavena. Od wersji 1.3 zaczęto go konstruować za pomocą Mavena.
MuleSource
W 2006 roku firma MuleSource została włączona „w celu wsparcia i umożliwienia szybko rosnącej społeczności używającej Mule w krytycznych aplikacjach korporacyjnych”. Okazało się, że był to kluczowy krok milowy dla Mule Project.
Konkurenci Mule ESB
Oto niektórzy z głównych konkurentów Mule ESB -
- WSO2 ESB
- Oracle Service Bus
- WebSphere Message Broker
- Platforma Aurea CX
- Fiorano ESB
- Brama WebSphere DataPower
- Struktura procesów biznesowych dnia roboczego
- Talend Enterprise Service Bus
- JBoss Enterprise Service Bus
- iWay Service Manager
Podstawowa koncepcja Mule
Jak już wspomniano, Mule ESB to lekka i wysoce skalowalna oparta na Javie magistrala usług korporacyjnych (ESB) i platforma integracyjna. Niezależnie od różnych technologii wykorzystywanych przez aplikacje, Mule ESB umożliwia łatwą integrację aplikacji, umożliwiając im wymianę danych. W tej sekcji omówimy podstawową koncepcję Mule, która ma umożliwić taką integrację.
W tym celu musimy zrozumieć jego architekturę, a także elementy składowe.
Architektura
Architektura Mule ESB ma trzy warstwy, a mianowicie warstwę transportową, warstwę integracji i warstwę aplikacji, jak pokazano na poniższym schemacie -
Ogólnie rzecz biorąc, istnieją trzy typy zadań, które można wykonać, aby skonfigurować i dostosować wdrożenie Mule -
Rozwój komponentów usług
To zadanie polega na opracowaniu lub ponownym wykorzystaniu istniejących POJO lub Spring Beans. POJOs to klasa z atrybutami, która generuje metody pobierania i ustawiania, łączniki chmury. Z drugiej strony Spring Beans zawiera logikę biznesową służącą do wzbogacania wiadomości.
Orkiestracja usług
To zadanie zasadniczo zapewnia mediację usług, która obejmuje konfigurowanie procesora komunikatów, routerów, transformatorów i filtrów.
Integracja
Najważniejszym zadaniem Mule ESB jest integracja różnych aplikacji niezależnie od używanych przez nie protokołów. W tym celu Mule zapewnia metody transportu, które umożliwiają odbieranie i wysyłanie wiadomości na różnych złączach protokołu. Mule obsługuje wiele istniejących metod transportu lub możemy również skorzystać z niestandardowej metody transportu.
Cegiełki
Konfiguracja Mule składa się z następujących elementów składowych -
Wiosenna fasola
Głównym zastosowaniem ziaren wiosennych jest konstruowanie komponentu usługowego. Po skonstruowaniu komponentu usługi sprężynowej możemy go zdefiniować poprzez plik konfiguracyjny lub ręcznie, jeśli nie posiadasz pliku konfiguracyjnego.
Agenci
Jest to w zasadzie usługa stworzona w Anypoint Studio przed Mule Studio. Agent jest tworzony po uruchomieniu serwera i zostanie zniszczony po zatrzymaniu serwera.
Złącze
Jest to komponent oprogramowania skonfigurowany z parametrami specyficznymi dla protokołów. Służy głównie do kontrolowania użycia protokołu. Na przykład łącznik JMS jest skonfigurowany z rozszerzeniemConnection a to złącze będzie współdzielone przez różne podmioty odpowiedzialne za faktyczną komunikację.
Konfiguracja globalna
Jak sama nazwa wskazuje, ten blok konstrukcyjny służy do ustawiania globalnych właściwości i ustawień.
Globalne punkty końcowe
Można go używać w zakładce Elementy globalne, której można używać tyle razy w przepływie -
Globalny procesor wiadomości
Jak sama nazwa wskazuje, obserwuje lub modyfikuje komunikat lub przepływ komunikatów. Przykładami procesora Global Message Processor są transformatory i filtry.
Transformers- Głównym zadaniem transformatora jest konwersja danych z jednego formatu na inny. Można go zdefiniować globalnie i używać w wielu przepływach.
Filters- To filtr decyduje, która wiadomość Mule powinna zostać przetworzona. Filtr zasadniczo określa warunki, które muszą być spełnione, aby wiadomość została przetworzona i skierowana do usługi.
Modele
W przeciwieństwie do Agentów jest to logiczne zgrupowanie usług, które powstają w studio. Mamy swobodę uruchamiania i zatrzymywania wszystkich usług w ramach określonego modelu.
Services- Usługi to te, które obejmują naszą logikę biznesową lub komponenty. Konfiguruje również routery, punkty końcowe, transformatory i filtry specjalnie dla tej usługi.
Endpoints- Może być zdefiniowany jako obiekt, na którym usługi będą przychodzić (odbierać) i wychodzić (wysyłać) wiadomości. Usługi są połączone za pośrednictwem punktów końcowych.
Pływ
Procesor komunikatów używa przepływów do definiowania przepływu komunikatów między źródłem a celem.
Struktura wiadomości muła
Wiadomość Mule, całkowicie opakowana w obiekt Mule Message Object, to dane, które przechodzą przez aplikacje za pośrednictwem przepływów Mule. Komunikat struktury Mule jest pokazany na poniższym schemacie -
Jak widać na powyższym diagramie, Mule Message składa się z dwóch głównych części -
nagłówek
To nic innego jak metadane wiadomości, które są dodatkowo reprezentowane przez następujące dwie właściwości -
Inbound Properties- Są to właściwości, które są automatycznie ustawiane przez źródło wiadomości. Użytkownik nie może nimi manipulować ani ustawiać. W naturze właściwości przychodzące są niezmienne.
Outbound Properties- Są to właściwości, które zawierają metadane, takie jak właściwość przychodząca i które można ustawić w trakcie przepływu. Mogą być ustawiane automatycznie przez Mule lub ręcznie przez użytkownika. W naturze właściwości wychodzące są zmienne.
Właściwości wychodzące stają się właściwościami przychodzącymi, gdy wiadomość przechodzi z wychodzącego punktu końcowego jednego przepływu do przychodzącego punktu końcowego innego przepływu za pośrednictwem transportu.
Właściwości wychodzące pozostają właściwościami wychodzącymi, gdy wiadomość jest przekazywana do nowego przepływu za pośrednictwem elementu flow-ref, a nie łącznika.
Ładowność
Rzeczywisty komunikat biznesowy przenoszony przez obiekt komunikatu jest nazywany ładunkiem.
Zmienne
Może być zdefiniowany jako zdefiniowane przez użytkownika metadane dotyczące wiadomości. Zasadniczo zmienne to tymczasowe informacje o wiadomości używanej przez aplikację, która ją przetwarza. Nie jest przeznaczone do przekazywania razem z wiadomościami do miejsca docelowego. Są trzech typów, jak podano poniżej -
Flow variables - Te zmienne dotyczą tylko przepływu, w którym istnieją.
Session variables - Te zmienne mają zastosowanie do wszystkich przepływów w tej samej aplikacji.
Record variables - Te zmienne mają zastosowanie tylko do rekordów przetwarzanych w ramach partii.
Załączniki i dodatkowy ładunek
Są to dodatkowe metadane dotyczące ładunku wiadomości, które niekoniecznie pojawiają się za każdym razem w obiekcie wiadomości.
W poprzednich rozdziałach poznaliśmy podstawy Mule ESB. Z tego rozdziału dowiemy się, jak go zainstalować i skonfigurować.
Wymagania wstępne
Przed zainstalowaniem Mule na naszym komputerze musimy spełnić następujące wymagania wstępne -
Java Development Kit (JDK)
Przed zainstalowaniem MULE sprawdź, czy masz obsługiwaną wersję Java w swoim systemie. JDK 1.8.0 jest zalecane, aby pomyślnie zainstalować Mule w systemie.
System operacyjny
Następujące systemy operacyjne są obsługiwane przez Mule -
- MacOS 10.11.x
- HP-UX 11iV3
- AIX 7.2
- Serwer Windows 2016
- Serwer Windows 2012 R2
- Windows 10
- Windows 8.1
- Solaris 11.3
- RHEL 7
- Serwer Ubuntu 18.04.0
- Linux Kernel 3.13+
Baza danych
Serwer aplikacji ani baza danych nie są wymagane, ponieważ Mule Runtime działa jako serwer autonomiczny. Jeśli jednak potrzebujemy dostępu do magazynu danych lub chcemy skorzystać z serwera aplikacji, można skorzystać z następujących obsługiwanych serwerów aplikacji lub baz danych -
- Oracle 11g
- Oracle 12c
- MySQL 5.5+
- IBM DB2 10
- PostgreSQL 9
- Derby 10
- Microsoft SQL Server 2014
wymagania systemowe
Przed zainstalowaniem Mule w systemie musi spełniać następujące wymagania systemowe -
- Co najmniej procesor 2 GHz lub 1 procesor wirtualny w środowiskach zwirtualizowanych
- Co najmniej 1 GB pamięci RAM
- Minimum 4 GB miejsca
Pobierz Mule
Aby pobrać plik binarny Mule 4, kliknij łącze https://www.mulesoft.com/lp/dl/mule-esb-enterprise i prowadzi do oficjalnej strony internetowej MuleSoft w następujący sposób -
Podając niezbędne informacje, możesz pobrać plik binarny Mule 4 w formacie Zip.
Zainstaluj i uruchom Mule
Teraz po pobraniu pliku binarnego Mule 4 rozpakuj go i ustaw zmienną środowiskową o nazwie MULE_HOME dla katalogu Mule w wyodrębnionym folderze.
Na przykład zmienną środowiskową w środowiskach Windows i Linux / Unix można ustawić dla wersji 4.1.5 w katalogu Pobrane w następujący sposób -
Środowiska Windows
$ env:MULE_HOME=C:\Downloads\mule-enterprise-standalone-4.1.5\
Środowiska Unix / Linux
$ export MULE_HOME=~/Downloads/mule-enterprise-standalone-4.1.5/
Teraz, aby sprawdzić, czy Mule działa w twoim systemie bez żadnego błędu, użyj następujących poleceń -
Środowiska Windows
$ $MULE_HOME\bin\mule.bat
Środowiska Unix / Linux
$ $MULE_HOME/bin/mule
Powyższe polecenia uruchomią Mule w trybie pierwszego planu. Jeśli Mule jest uruchomiony, nie możemy wydawać żadnych innych poleceń na terminalu. Pilnyctrl-c polecenie w terminalu, zatrzyma Mule.
Uruchom usługi Mule
Możemy uruchomić Mule jako usługę Windows, a także jako demona Linux / Unix.
Mule jako usługa systemu Windows
Aby uruchomić Mule jako usługę Windows, musimy wykonać poniższe kroki -
Step 1 - Najpierw zainstaluj go za pomocą następującego polecenia -
$ $MULE_HOME\bin\mule.bat install
Step 2 - Po zainstalowaniu możemy uruchomić mule jako usługę Windows za pomocą następującego polecenia:
$ $MULE_HOME\bin\mule.bat start
Mule jako demon Linux / Unix
Aby uruchomić Mule jako demona Linux / Unix, musimy wykonać poniższe kroki -
Step 1 - Zainstaluj go za pomocą następującego polecenia -
$ $MULE_HOME/bin/mule install
Step 2 - Po zainstalowaniu możemy uruchomić mule jako usługę Windows za pomocą następującego polecenia -
$ $MULE_HOME/bin/mule start
Example
Poniższy przykład uruchamia Mule jako demona uniksowego -
$ $MULE_HOME/bin/mule start
MULE_HOME is set to ~/Downloads/mule-enterprise-standalone-4.1.5
MULE_BASE is set to ~/Downloads/mule-enterprise-standalone-4.1.5
Starting Mule Enterprise Edition...
Waiting for Mule Enterprise Edition.................
running: PID:87329
Wdrażaj aplikacje Mule
Możemy wdrożyć nasze aplikacje Mule za pomocą następujących kroków -
Step 1 - Najpierw uruchom Mule.
Step 2 - Po uruchomieniu Mule możemy wdrożyć nasze aplikacje Mule, przenosząc nasze pliki pakietów JAR do apps katalog w $MULE_HOME.
Zatrzymaj usługi Mule
Możemy użyć stoppolecenie zatrzymania Mule. Na przykład poniższy przykład uruchamia Mule jako demona uniksowego -
$ $MULE_HOME/bin/mule stop
MULE_HOME is set to /Applications/mule-enterprise-standalone-4.1.5
MULE_BASE is set to /Applications/mule-enterprise-standalone-4.1.5
Stopping Mule Enterprise Edition...
Stopped Mule Enterprise Edition.
Możemy również użyć removepolecenie usunięcia usługi Mule lub demona z naszego systemu. Poniższy przykład usuwa Mule jako demona uniksowego -
$ $MULE_HOME/bin/mule remove
MULE_HOME is set to /Applications/mule-enterprise-standalone-4.1.5
MULE_BASE is set to /Applications/mule-enterprise-standalone-4.1.5
Detected Mac OSX:
Mule Enterprise Edition is not running.
Removing Mule Enterprise Edition daemon...
Anypoint Studio firmy MuleSoft jest przyjazne dla użytkownika IDE (integration development environment)używany do projektowania i testowania aplikacji Mule. Jest to IDE oparte na Eclipse. Z łatwością możemy przeciągnąć Connectors z Mule Palette. Innymi słowy, Anypoint Studio to środowisko IDE oparte na Eclipse do tworzenia przepływów itp.
Wymagania wstępne
Musimy spełnić następujące warunki wstępne przed zainstalowaniem Mule na wszystkich systemach operacyjnych, tj. Windows, Mac i Linux / Unix.
Java Development Kit (JDK)- Przed zainstalowaniem Mule sprawdź, czy masz obsługiwaną wersję Java w swoim systemie. JDK 1.8.0 jest zalecane, aby pomyślnie zainstalować Anypoint w systemie.
Pobieranie i instalowanie Anypoint Studio
Procedura pobierania i instalowania Anypoint Studio w różnych systemach operacyjnych może się różnić. Następnie należy wykonać kroki, aby pobrać i zainstalować Anypoint Studio w różnych systemach operacyjnych -
W systemie Windows
Aby pobrać i zainstalować Anypoint Studio w systemie Windows, musimy wykonać poniższe czynności -
Step 1 - Najpierw kliknij link https://www.mulesoft.com/lp/dl/studio i wybierz system operacyjny Windows z listy od góry do dołu, aby pobrać studio.
Step 2 - Teraz wypakuj go do ‘C:\’ Folder główny.
Step 3 - Otwórz rozpakowane Anypoint Studio.
Step 4- Aby zaakceptować domyślny obszar roboczy, kliknij OK. Po pierwszym załadowaniu otrzymasz wiadomość powitalną.
Step 5 - Teraz kliknij przycisk Rozpocznij, aby użyć Anypoint Studio.
W systemie OS X
Aby pobrać i zainstalować Anypoint Studio na OS X, musimy wykonać poniższe czynności -
Step 1 - Najpierw kliknij link https://www.mulesoft.com/lp/dl/studio i pobierz studio.
Step 2- A teraz wypakuj. Jeśli używasz wersji systemu operacyjnego Sierra, przenieś wyodrębnioną aplikację do/Applications folder przed uruchomieniem.
Step 3 - Otwórz rozpakowane Anypoint Studio.
Step 4- Aby zaakceptować domyślny obszar roboczy, kliknij OK. Po pierwszym załadowaniu otrzymasz wiadomość powitalną.
Step 5 - Teraz kliknij Get Started aby użyć Anypoint Studio.
Jeśli zamierzasz użyć niestandardowej ścieżki do swojego obszaru roboczego, pamiętaj, że Anypoint Studio nie rozszerza ~ tyldy używanej w systemach Linux / Unix. W związku z tym przy definiowaniu obszaru roboczego zaleca się stosowanie ścieżki bezwzględnej.
W systemie Linux
Aby pobrać i zainstalować Anypoint Studio w systemie Linux, musimy wykonać poniższe czynności -
Step 1 - Najpierw kliknij link https://www.mulesoft.com/lp/dl/studio i wybierz system operacyjny Linux z listy od góry do dołu, aby pobrać studio.
Step 2 - A teraz wypakuj.
Step 3 - Następnie otwórz wyodrębniony Anypoint Studio.
Step 4- Aby zaakceptować domyślny obszar roboczy, kliknij OK. Po pierwszym załadowaniu otrzymasz wiadomość powitalną.
Step 5 - Teraz kliknij przycisk Rozpocznij, aby użyć Anypoint Studio.
Jeśli zamierzasz użyć niestandardowej ścieżki do swojego obszaru roboczego, pamiętaj, że Anypoint Studio nie rozszerza ~ tyldy używanej w systemach Linux / Unix. W związku z tym przy definiowaniu obszaru roboczego zaleca się stosowanie ścieżki bezwzględnej.
Zaleca się również zainstalowanie GTK w wersji 2, aby korzystać z pełnych motywów Studio w systemie Linux.
Funkcje Anypoint Studio
Oto niektóre funkcje studia Anypoint zwiększające produktywność podczas tworzenia aplikacji Mule -
Zapewnia natychmiastowe uruchomienie aplikacji Mule w lokalnym środowisku wykonawczym.
Anypoint studio udostępnia nam edytor wizualny do konfigurowania plików definicji API i domen Mule.
Posiada wbudowane ramy testów jednostkowych zwiększające produktywność.
Anypoint studio zapewnia nam wbudowaną obsługę wdrażania w CloudHub.
Posiada możliwość integracji z Exchange w celu importowania szablonów, przykładów, definicji i innych zasobów z innych organizacji Anypoint Platform.
Redaktorzy Anypoint Studio pomagają nam projektować nasze aplikacje, interfejsy API, właściwości i pliki konfiguracyjne. Oprócz projektowania pomaga nam też je edytować. W tym celu mamy edytor plików konfiguracyjnych Mule. Aby otworzyć ten edytor, kliknij dwukrotnie plik XML aplikacji w/src/main/mule.
Aby pracować z naszą aplikacją, mamy następujące trzy zakładki w edytorze plików konfiguracyjnych Mule.
Karta Przepływ komunikatów
Ta karta zapewnia wizualną reprezentację przepływu pracy. Zasadniczo zawiera płótno, które pomaga nam wizualnie sprawdzić nasze przepływy. Jeśli chcesz dodać procesory zdarzeń z palety Mule do płótna, po prostu przeciągnij i upuść, a zostanie to odzwierciedlone na płótnie.
Klikając Event Processor, możesz uzyskać widok Mule Properties z atrybutami wybranego procesora. Możemy je również edytować.
Zakładka Elementy globalne
Ta karta zawiera globalne elementy konfiguracji Mule dla modułów. W tej zakładce możemy tworzyć, edytować lub usuwać pliki konfiguracyjne.
Zakładka XML konfiguracji
Jak sama nazwa wskazuje, zawiera kod XML definiujący Twoją aplikację Mule. Wszystkie wprowadzone tutaj zmiany zostaną odzwierciedlone w obszarze roboczym, a także w widoku właściwości procesora zdarzeń na karcie Przepływ komunikatów.
Wyświetlenia
Dla aktywnego redaktora Anypoint studio zapewnia nam graficzną reprezentację metadanych naszego projektu, właściwości za pomocą widoków. Użytkownik może przesuwać, zamykać, a także dodawać widoki w projekcie Mule. Oto kilka domyślnych widoków w Anypoint Studio -
Eksplorator pakietów
Głównym zadaniem widoku Eksploratora pakietów jest wyświetlanie folderów projektu i plików zawartych w projekcie Mule. Możemy rozszerzyć lub zawęzić folder projektu Mule, klikając strzałkę obok niego. Folder lub plik można otworzyć, klikając go dwukrotnie. Spójrz na zrzut ekranu -
Mule Palette
Widok Mule Palette przedstawia procesory zdarzeń, takie jak zakresy, filtry i routery kontroli przepływu, a także moduły i powiązane z nimi operacje. Główne zadania widoku Mule Palette są następujące -
- Ten widok pomaga nam zarządzać modułami i złączami w naszym projekcie.
- Możemy również dodawać nowe elementy z Exchange.
Spójrz na zrzut ekranu -
Właściwości muła
Jak sama nazwa wskazuje, pozwala nam edytować właściwości modułu aktualnie wybranego w naszym kanwie. Widok właściwości muła zawiera następujące elementy -
DataSense Explorer, który dostarcza w czasie rzeczywistym informacje o strukturze danych naszego ładunku.
Właściwości danych przychodzących i wychodzących, jeśli są dostępne, lub zmienne.
Poniżej zrzut ekranu -
Konsola
Za każdym razem, gdy tworzymy lub uruchamiamy aplikację Mule, wbudowany serwer Mule wyświetla listę zdarzeń i problemów, jeśli występują, zgłoszonych przez Studio. Widok konsoli zawiera konsolę tego wbudowanego serwera Mule. Spójrz na zrzut ekranu -
Widok problemów
Podczas pracy nad projektem Mule możemy napotkać wiele problemów. Wszystkie te problemy są wyświetlane w widoku Problemy. Poniżej zrzut ekranu
Perspektywy
W Anypoint Studio jest to zbiór widoków i edytorów w określonym układzie. W Anypoint Studio są dwa rodzaje perspektyw -
Mule Design Perspective - To domyślna perspektywa, jaką otrzymujemy w Studio.
Mule Debug Perspective - Inną perspektywą dostarczoną przez Anypoint Studio jest Mule Debug Perspective.
Z drugiej strony możemy również stworzyć własną perspektywę i dodać lub usunąć dowolny z domyślnych widoków.
W tym rozdziale zamierzamy stworzyć naszą pierwszą aplikację Mule w Anypoint Studio firmy MuleSoft. Aby go stworzyć, najpierw musimy uruchomić Anypoint Studio.
Uruchomienie Anypoint Studio
Kliknij Anypoint Studio, aby go uruchomić. Jeśli uruchamiasz go po raz pierwszy, zobaczysz następujące okno -
Interfejs użytkownika Anypoint Studio
Po kliknięciu przycisku Idź do obszaru roboczego nastąpi przejście do interfejsu użytkownika Anypoint Studio w następujący sposób -
Kroki tworzenia aplikacji Mule
Aby utworzyć aplikację Mule, wykonaj poniższe czynności -
Tworzenie nowego projektu
Pierwszym krokiem do stworzenia aplikacji Mule jest utworzenie nowego projektu. Można to zrobić podążając ścieżkąFILE → NEW → Mule Project jak pokazano poniżej -
Nazwanie projektu
Po kliknięciu nowego projektu Mule, jak opisano powyżej, otworzy się nowe okno z pytaniem o nazwę projektu i inne specyfikacje. Podaj nazwę projektu ”TestAPP1', a następnie kliknij przycisk Zakończ.
Po kliknięciu przycisku Zakończ, otworzy się obszar roboczy zbudowany dla Twojego MuleProject, a mianowicie ‘TestAPP1’. Możesz zobaczyć wszystkie plikiEditors i Views opisane w poprzednim rozdziale.
Konfiguracja łącznika
Tutaj mamy zamiar zbudować prostą aplikację Mule dla Listenera HTTP. W tym celu musimy przeciągnąć konektor HTTP Listener z Mule Palette i upuścić go w obszarze roboczym, jak pokazano poniżej -
Teraz musimy to skonfigurować. Kliknij zielony kolor + znak po konfiguracji złącza w Ustawieniach podstawowych, jak pokazano powyżej.
Po kliknięciu OK nastąpi powrót do strony właściwości Listener HTTP. Teraz musimy podać ścieżkę w zakładce Ogólne. W tym konkretnym przykładzie podaliśmy/FirstAPP jako nazwa ścieżki.
Konfigurowanie łącznika Set Payload
Teraz musimy wziąć złącze Set Payload. Musimy również podać jego wartość w zakładce Ustawienia w następujący sposób -
This is my first Mule Application, to nazwa podana w tym przykładzie.
Uruchomiona aplikacja Mule
Teraz zapisz go i kliknij Run as Mule Application jak pokazano poniżej -
Możemy to sprawdzić pod konsolą, która wdraża aplikację w następujący sposób -
Pokazuje, że pomyślnie zbudowałeś swoją pierwszą aplikację Mule.
Weryfikacja aplikacji Mule
Teraz musimy sprawdzić, czy nasza aplikacja działa, czy nie. Go to POSTMAN, aplikację Chrome i wprowadź adres URL: http:/localhost:8081. Pokazuje wiadomość, którą przekazaliśmy podczas tworzenia aplikacji Mule, jak pokazano poniżej -
DataWeave to w zasadzie język ekspresji MuleSoft. Służy głównie do uzyskiwania dostępu i przekształcania danych otrzymanych za pośrednictwem aplikacji Mule. Środowisko wykonawcze Mule jest odpowiedzialne za uruchamianie skryptu i wyrażeń w naszej aplikacji Mule, DataWeave jest silnie zintegrowana ze środowiskiem wykonawczym Mule.
Funkcje języka DataWeave
Poniżej przedstawiono kilka ważnych cech języka DataWeave -
Dane można bardzo łatwo przekształcić z jednego formatu na inny. Na przykład możemy przekształcić application / json do application / xml. Ładowność wejściowa jest następująca -
{
"title": "MuleSoft",
"author": " tutorialspoint.com ",
"year": 2019
}
Poniżej znajduje się kod w DataWeave do transformacji -
%dw 2.0
output application/xml
---
{
order: {
'type': 'Tutorial',
'title': payload.title,
'author': upper(payload.author),
'year': payload.year
}
}
Następnie output ładowność jest następująca -
<?xml version = '1.0' encoding = 'UTF-8'?>
<order>
<type>Tutorial</type>
<title>MuleSoft</title>
<author>tutorialspoint.com</author>
<year>2019</year>
</order>
Komponent transformacji może służyć do tworzenia skryptów wykonujących zarówno proste, jak i złożone transformacje danych.
Możemy uzyskać dostęp do podstawowych funkcji DataWeave i korzystać z nich w częściach zdarzenia Mule, których potrzebujemy, ponieważ większość procesorów wiadomości Mule obsługuje wyrażenia DataWeave.
Wymagania wstępne
Przed użyciem skryptów DataWeave na naszym komputerze musimy spełnić następujące wymagania wstępne -
Anypoint Studio 7 jest wymagane do korzystania ze skryptów Dataweave.
Po zainstalowaniu Anypoint Studio musimy skonfigurować projekt z komponentem Transform Message, aby móc korzystać ze skryptów DataWeave.
Kroki korzystania ze skryptu DataWeave z przykładem
Aby korzystać ze skryptu DataWeave, musimy wykonać poniższe kroki -
Step 1
Najpierw musimy skonfigurować nowy projekt, tak jak to zrobiliśmy w poprzednim rozdziale, używając File → New → Mule Project.
Step 2
Następnie musimy podać nazwę projektu. W tym przykładzie podajemy nazwę,Mule_test_script.
Step 3
Teraz musimy przeciągnąć plik Transform Message component od Mule Palette tab w canvas. Jest to pokazane poniżej -
Step 4
Następnie w Transform Message componentkliknij przycisk Podgląd, aby otworzyć okienko podglądu. Możemy rozszerzyć obszar kodu źródłowego, klikając pusty prostokąt obok opcji Podgląd.
Step 5
Teraz możemy rozpocząć pisanie skryptów w języku DataWeave.
Przykład
Poniżej znajduje się prosty przykład łączenia dwóch ciągów w jeden -
Powyższy skrypt DataWeave ma parę klucz-wartość ({ myString: ("hello" ++ "World") }) który połączy dwa ciągi w jeden.
Moduły skryptowe ułatwiają użytkownikom korzystanie z języka skryptowego w Mule. Krótko mówiąc, moduł skryptowy może wymieniać niestandardową logikę napisaną w języku skryptowym. Skrypty mogą służyć jako implementacje lub transformatory. Mogą być używane do oceny wyrażeń, tj. Do sterowania routingiem komunikatów.
Mule ma następujące obsługiwane języki skryptowe -
- Groovy
- Python
- JavaScript
- Ruby
Jak zainstalować moduły skryptów?
Właściwie Anypoint Studio zawiera moduły skryptowe. Jeśli nie znajdziesz modułu w Mule Palette, możesz go dodać za pomocą+Add Module. Po dodaniu możemy skorzystać z operacji modułu skryptowego w naszej aplikacji Mule.
Przykład implementacji
Jak już wspomniano, musimy przeciągnąć i upuścić moduł na kanwę w celu stworzenia obszaru roboczego i użyć go w naszej aplikacji. Oto przykład -
Wiemy już, jak skonfigurować komponent HTTP Listener; dlatego zamierzamy omówić konfigurację modułów skryptów. Musimy postępować zgodnie z poniższymi krokami, aby skonfigurować moduł skryptów -
Step 1
Wyszukaj moduł skryptów z palety Mule i przeciągnij plik EXECUTE działanie modułu skryptów w przepływie, jak pokazano powyżej.
Step 2
Teraz otwórz kartę Wykonaj konfigurację, klikając dwukrotnie to samo.
Step 3
Pod General musimy podać kod w Code text window jak pokazano poniżej -
Step 4
W końcu musimy wybrać Enginez komponentu wykonania. Lista silników jest jak poniżej -
- Groovy
- Nashorn(javaScript)
- jython(Python)
- jRuby(Ruby)
XML powyższego przykładu wykonania w edytorze XML konfiguracji wygląda następująco -
<scripting:execute engine="jython" doc:name = "Script">
<scripting:code>
def factorial(n):
if n == 0: return 1
return n * factorial(n-1)
result = factorial(10)
</scripting:code>
</scripting:execute>
Źródła wiadomości
Mule 4 ma uproszczony model niż komunikat Mule 3, co ułatwia pracę z danymi w spójny sposób w łącznikach bez nadpisywania informacji. W modelu wiadomości Mule 4 każde zdarzenie Mule składa się z dwóch rzeczy:a message and variables associated with it.
Wiadomość Mule ma ładunek i jego atrybuty, gdzie atrybutem są głównie metadane, takie jak rozmiar pliku.
Zmienna przechowuje dowolne informacje o użytkowniku, takie jak wynik operacji, wartości pomocnicze itp.
Przychodzące
Właściwości przychodzące w Mule 3 stają się teraz atrybutami w Mule 4. Ponieważ wiemy, że właściwości przychodzące przechowują dodatkowe informacje o ładunku uzyskanym za pośrednictwem źródła wiadomości, ale teraz w Mule 4 odbywa się to za pomocą atrybutów. Atrybuty mają następujące zalety -
Za pomocą atrybutów możemy łatwo sprawdzić, które dane są dostępne, ponieważ atrybuty są silnie wpisane.
Mamy łatwy dostęp do informacji zawartych w atrybutach.
Poniżej znajduje się przykład typowej wiadomości w Mule 4:
Wychodzący
Właściwości wychodzące w Mule 3 muszą być wyraźnie określone przez łączniki i transporty Mule w celu wysyłania dodatkowych danych. Ale w Mule 4 każdy z nich można ustawić osobno, używając wyrażenia DataWeave dla każdego z nich. Nie powoduje żadnych skutków ubocznych w głównym przepływie.
Na przykład poniżej wyrażenie DataWeave wykona żądanie HTTP i wygeneruje nagłówki oraz parametry zapytania bez konieczności ustawiania właściwości wiadomości. Pokazuje to poniższy kod -
<http:request path = "M_issue" config-ref="http" method = "GET">
<http:headers>#[{'path':'input/issues-list.json'}]</http:headers>
<http:query-params>#[{'provider':'memory-provider'}]</http:query-params>
</http:request>
Message Processor
Gdy Mule otrzyma wiadomość ze źródła wiadomości, rozpoczyna się praca procesora wiadomości. Mule używa co najmniej jednego procesora wiadomości do przetwarzania wiadomości przez przepływ. Głównym zadaniem procesora wiadomości jest transformacja, filtrowanie, wzbogacanie i przetwarzanie wiadomości, gdy przechodzi ona przez przepływ Mule.
Kategoryzacja procesora Mule
Poniżej znajdują się kategorie procesorów Mule, oparte na funkcjach -
Connectors- Te procesory wiadomości wysyłają i odbierają dane. Podłączają również dane do zewnętrznych źródeł danych za pośrednictwem standardowych protokołów lub zewnętrznych interfejsów API.
Components - Te procesory wiadomości są z natury elastyczne i wykonują logikę biznesową zaimplementowaną w różnych językach, takich jak Java, JavaScript, Groovy, Python lub Ruby.
Filters - Filtrują wiadomości i pozwalają na dalsze przetwarzanie tylko określonych wiadomości w przepływie w oparciu o określone kryteria.
Routers - Ten procesor komunikatów jest używany do sterowania przepływem komunikatów do trasowania, ponownego sekwencjonowania lub dzielenia.
Scopes - hej, po prostu zawijaj fragmenty kodu w celu zdefiniowania drobnoziarnistego zachowania w przepływie.
Transformers - Rolą transformatorów jest konwersja typu ładunku wiadomości i formatu danych w celu ułatwienia komunikacji między systemami.
Business Events - Zasadniczo przechwytują dane związane z kluczowymi wskaźnikami wydajności.
Exception strategies - Te procesory komunikatów obsługują wszelkiego rodzaju błędy, które występują podczas przetwarzania komunikatów.
Jedną z najważniejszych możliwości Mule jest to, że może wykonywać routing, transformację i przetwarzanie z komponentami, dzięki czemu plik konfiguracyjny aplikacji Mule, który łączy różne elementy, ma bardzo duży rozmiar.
Poniżej przedstawiono typy wzorców konfiguracji udostępnianych przez Mule -
- Prosty wzór obsługi
- Bridge
- Validator
- Http Proxy
- Proxy WS
Konfiguracja komponentu
W Anypoint Studio możemy wykonać poniższe kroki, aby skonfigurować komponent -
Step 1
Musimy przeciągnąć komponent, którego chcemy użyć w naszej aplikacji Mule. Na przykład tutaj używamy komponentu odbiornika HTTP w następujący sposób -
Step 2
Następnie kliknij dwukrotnie komponent, aby wyświetlić okno konfiguracji. W przypadku odbiornika HTTP jest to pokazane poniżej -
Step 3
Możemy skonfigurować komponent zgodnie z wymaganiami naszego projektu. Załóżmy na przykład, że zrobiliśmy dla komponentu odbiornika HTTP -
Podstawowe komponenty są jednym z ważnych elementów przepływu pracy w aplikacji Mule. Logika przetwarzania zdarzenia Mule jest zapewniana przez te podstawowe komponenty. W studiu Anypoint, aby uzyskać dostęp do tych podstawowych komponentów, możesz kliknąć rdzeń z palety Mule, jak pokazano poniżej -
Poniżej są różne core components and their working in Mule 4 -
Niestandardowe wydarzenia biznesowe
Ten podstawowy komponent służy do zbierania informacji o przepływach, a także procesorach wiadomości obsługujących transakcje biznesowe w aplikacji Mule. Innymi słowy, możemy użyć komponentu Niestandardowe wydarzenie biznesowe, aby dodać następujące elementy do naszego przepływu pracy -
- Metadata
- Kluczowe wskaźniki wydajności (KPI)
Jak dodać KPI?
Poniżej przedstawiono kroki, aby dodać wskaźniki KPI w naszym przepływie w aplikacji Mule -
Step 1 - Podążaj za Mule Palette → Core → Components → Custom Business Event, aby dodać komponent Niestandardowe wydarzenie biznesowe do przepływu pracy w aplikacji Mule.
Step 2 - Kliknij komponent, aby go otworzyć.
Step 3 - Teraz musimy podać wartości wyświetlanej nazwy i nazwy zdarzenia.
Step 4 - Aby przechwycić informacje z ładunku wiadomości, dodaj wskaźniki KPI w następujący sposób -
Podaj nazwę (klucz) wskaźnika KPI ( śledzenie: element metadanych ) i wartość. Nazwa zostanie użyta w interfejsie wyszukiwania programu Runtime Manager.
Podaj wartość, która może być dowolnym wyrażeniem Mule.
Przykład
Poniższa tabela zawiera listę kluczowych wskaźników wydajności wraz z nazwą i wartością -
Nazwa | Wyrażenie / wartość |
---|---|
Student RollNo | # [ładunek ['RollNo']] |
Imię ucznia | # [ładunek ['nazwa']] |
Dynamiczna ocena
Ten podstawowy komponent służy do dynamicznego wybierania skryptu w aplikacji Mule. Możemy również użyć skryptu hardcore za pośrednictwem komponentu Transform Message, ale użycie komponentu Dynamic Evaluate jest lepszym sposobem. Ten podstawowy składnik działa w następujący sposób -
- Po pierwsze, ocenia wyrażenie, które powinno skutkować innym skryptem.
- Następnie ocenia ten skrypt pod kątem końcowego wyniku.
W ten sposób pozwala nam dynamicznie wybierać skrypt, zamiast go zakodować.
Przykład
Poniżej znajduje się przykład wybierania skryptu z bazy danych za pomocą parametru zapytania Id i przechowywania tego skryptu w zmiennej o nazwie MyScript . Teraz komponent dynamicznej oceny uzyska dostęp do zmiennej, aby wywołać skrypty, aby mógł dodać zmienną nazwy zUName parametr zapytania.
Konfiguracja XML przepływu jest podana poniżej -
<flow name = "DynamicE-example-flow">
<http:listener config-ref = "HTTP_Listener_Configuration" path = "/"/>
<db:select config-ref = "dbConfig" target = "myScript">
<db:sql>#["SELECT script FROM SCRIPTS WHERE ID =
$(attributes.queryParams.Id)"]
</db:sql>
</db:select>
<ee:dynamic-evaluate expression = "#[vars.myScript]">
<ee:parameters>#[{name: attributes.queryParams.UName}]</ee:parameters>
</ee:dynamic-evaluate>
</flow>
Skrypt może używać zmiennych kontekstowych, takich jak komunikat, ładunek, zmienne lub atrybuty. Jeśli jednak chcesz dodać niestandardową zmienną kontekstową, musisz podać zestaw par klucz-wartość.
Konfigurowanie oceny dynamicznej
Poniższa tabela przedstawia sposób konfigurowania komponentu Dynamic Evaluate -
Pole | Wartość | Opis | Przykład |
---|---|---|---|
Wyrażenie | Wyrażenie DataWeave | Określa wyrażenie, które ma zostać ocenione w ostatecznym skrypcie. | wyrażenie = "# [vars.generateOrderScript]" |
Parametry | Wyrażenie DataWeave | Określa pary klucz-wartość. | # [{joiner: 'and', id: payload.user.id}] |
Komponent odniesienia przepływu
Jeśli chcesz skierować zdarzenie Mule do innego przepływu lub pod-przepływu i z powrotem w tej samej aplikacji Mule, komponent odniesienia przepływu jest właściwą opcją.
Charakterystyka
Poniżej przedstawiono charakterystykę tego podstawowego komponentu -
Ten podstawowy składnik pozwala nam traktować cały przywoływany przepływ jako pojedynczy składnik w bieżącym przepływie.
Dzieli aplikację Mule na oddzielne jednostki wielokrotnego użytku. Na przykład przepływ polega na regularnym wyświetlaniu plików. Może odwoływać się do innego przepływu, który przetwarza dane wyjściowe operacji listy.
W ten sposób zamiast dołączać całe kroki przetwarzania, możemy dołączyć odwołania do przepływu, które wskazują na przepływ przetwarzania. Poniższy zrzut ekranu pokazuje, że komponent rdzenia odniesienia przepływu wskazuje na pod-przepływ o nazwieProcessFiles.
Pracujący
Działanie komponentu Flow Ref można zrozumieć za pomocą następującego diagramu -
Diagram przedstawia kolejność przetwarzania w aplikacji Mule, gdy jeden przepływ odwołuje się do innego przepływu w tej samej aplikacji. Po wyzwoleniu głównego przepływu roboczego w aplikacji Mule zdarzenie Mule przechodzi przez cały czas i wykonuje przepływ, aż zdarzenie Mule osiągnie wartość odniesienia przepływu.
Po osiągnięciu Flow Reference zdarzenie Mule wykonuje przywoływany przepływ od początku do końca. Gdy zdarzenie Mule zakończy wykonywanie przepływu odniesienia, wraca do głównego przepływu.
Przykład
Dla lepszego zrozumienia let us use this component in Anypoint Studio. W tym przykładzie pobieramy odbiornik HTTP, aby POBRAĆ wiadomość, tak jak to zrobiliśmy w poprzednim rozdziale. Możemy więc przeciągnąć i upuścić komponent i skonfigurować. Ale w tym przykładzie musimy dodać komponent Sub-flow i ustawić komponent Payload pod nim, jak pokazano poniżej -
Następnie musimy skonfigurować Set Payload, klikając go dwukrotnie. Tutaj podajemy wartość „Wykonano przepływ pomocniczy”, jak pokazano poniżej -
Po pomyślnym skonfigurowaniu komponentu podprzepływu potrzebujemy komponentu odniesienia przepływu do ustawienia po ustawieniu ładunku głównego przepływu, który możemy przeciągnąć i upuścić z palety Mule, jak pokazano poniżej -
Następnie, podczas konfigurowania komponentu odniesienia przepływu, musimy wybrać nazwę przepływu w zakładce Ogólne, jak pokazano poniżej -
Teraz zapisz i uruchom tę aplikację. Aby to przetestować, przejdź do POSTMAN i wpiszhttp:/localhost:8181/FirstAPP na pasku adresu URL, a otrzymasz komunikat, Przepływ podrzędny wykonany.
Logger Component
Główny komponent o nazwie logger pomaga nam monitorować i debugować naszą aplikację Mule poprzez rejestrowanie ważnych informacji, takich jak komunikaty o błędach, powiadomienia o stanie, ładunki itp. W AnyPoint Studio pojawiają Console.
Zalety
Oto kilka zalet komponentu Logger -
- Możemy dodać ten podstawowy komponent w dowolnym miejscu przepływu pracy.
- Możemy go skonfigurować tak, aby logował określony przez nas ciąg.
- Możemy go skonfigurować do wyjścia napisanego przez nas wyrażenia DataWeave.
- Możemy go również skonfigurować na dowolną kombinację ciągów i wyrażeń.
Przykład
Poniższy przykład wyświetla komunikat „Hello World” w ustawieniu ładunku w przeglądarce, a także rejestruje komunikat.
Poniżej przedstawiono konfigurację XML przepływu w powyższym przykładzie -
<http:listener-config name = "HTTP_Listener_Configuration" host = "localhost" port = "8081"/>
<flow name = "mymuleprojectFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/"/>
<set-payload value="Hello World"/>
<logger message = "#[payload]" level = "INFO"/>
</flow>
Przesyłanie składnika wiadomości
Transform Message Component, zwany także komponentem Transfer, pozwala nam konwertować dane wejściowe do nowego formatu wyjściowego.
Metody budowania transformacji
Możemy zbudować naszą transformację za pomocą następujących dwóch metod -
Drag-and-Drop Editor (Graphical View)- To pierwsza i najczęściej stosowana metoda budowania naszej transformacji. W tej metodzie możemy użyć wizualnego mappera tego komponentu do przeciągania i upuszczania elementów struktury danych przychodzących. Na przykład na poniższym diagramie dwa widoki drzewa przedstawiają oczekiwane struktury metadanych danych wejściowych i wyjściowych. Linie łączące dane wejściowe z polem wyjściowym reprezentują mapowanie między dwoma widokami drzewa.
Script View- Wizualne odwzorowanie Transformacji można również przedstawić za pomocą DataWeave, języka dla kodu Mule. Możemy kodować dla niektórych zaawansowanych transformacji, takich jak agregacja, normalizacja, grupowanie, łączenie, partycjonowanie, obracanie i filtrowanie. Przykład podano poniżej -
Ten podstawowy składnik zasadniczo akceptuje metadane wejściowe i wyjściowe dla zmiennej, atrybutu lub ładunku komunikatu. Możemy zapewnić zasoby specyficzne dla formatu dla następujących -
- CSV
- Schema
- Schemat pliku płaskiego
- JSON
- Klasa obiektu
- Prosty typ
- Schemat XML
- Nazwa i typ kolumny programu Excel
- Nazwa i typ kolumny o stałej szerokości
Punkty końcowe zasadniczo obejmują te komponenty, które wyzwalają lub inicjują przetwarzanie w przepływie roboczym aplikacji Mule. Nazywają sięSource w Anypoint Studio i Triggersw Design Center of Mule. Jednym z ważnych punktów końcowych w Mule 4 jestScheduler component.
Punkt końcowy harmonogramu
Ten komponent działa w warunkach czasowych, co oznacza, że umożliwia nam wyzwalanie przepływu za każdym razem, gdy spełniony jest warunek czasowy. Na przykład harmonogram może wyzwalać zdarzenie, aby rozpocząć przepływ pracy Mule co, powiedzmy, 10 sekund. Możemy również użyć elastycznego wyrażenia Cron, aby wyzwolić punkt końcowy harmonogramu.
Ważne informacje dotyczące harmonogramu
Korzystając z wydarzenia Scheduler, musimy zadbać o kilka ważnych punktów, jak podano poniżej -
Punkt końcowy harmonogramu jest zgodny ze strefą czasową komputera, na którym działa środowisko wykonawcze Mule.
Załóżmy, że jeśli aplikacja Mule działa w CloudHub, harmonogram będzie śledził strefę czasową regionu, w którym pracuje pracownik CloudHub.
W dowolnym momencie może być aktywny tylko jeden przepływ wyzwalany przez punkt końcowy harmonogramu.
W klastrze środowiska wykonawczego Mule punkt końcowy harmonogramu działa lub wyzwala tylko w węźle podstawowym.
Sposoby konfiguracji harmonogramu
Jak omówiono powyżej, możemy skonfigurować punkt końcowy harmonogramu tak, aby był wyzwalany w ustalonych odstępach czasu lub możemy również podać wyrażenie Cron.
Parametry do skonfigurowania harmonogramu (dla stałych interwałów)
Poniżej przedstawiono parametry umożliwiające ustawienie harmonogramu, aby wyzwalał przepływ w regularnych odstępach czasu -
Frequency- Zasadniczo opisuje, z jaką częstotliwością punkt końcowy harmonogramu będzie wyzwalać przepływ Mule. W tym celu można wybrać jednostkę czasu w polu Jednostka czasu. W przypadku, gdy nie podasz żadnych wartości dla tego, użyje wartości domyślnej, która wynosi 1000. Z drugiej strony, jeśli podasz 0 lub wartość ujemną, wówczas również użyje wartości domyślnej.
Start Delay- Jest to ilość czasu, jaką musimy poczekać, zanim uruchomimy przepływ Mule po raz pierwszy po uruchomieniu aplikacji. Wartość opóźnienia startu jest wyrażona w tej samej jednostce czasu co częstotliwość. Jego domyślna wartość to 0.
Time Unit- Opisuje jednostkę czasu dla częstotliwości i opóźnienia startu. Możliwe wartości jednostek czasu to milisekundy, sekundy, minuty, godziny, dni. Wartość domyślna to milisekundy.
Parametry do konfiguracji harmonogramu (dla wyrażenia Cron)
W rzeczywistości Cron jest standardem używanym do opisywania informacji o czasie i dacie. W przypadku użycia elastycznego wyrażenia Cron do wyzwolenia harmonogramu, punkt końcowy harmonogramu śledzi każdą sekundę i tworzy zdarzenie Mule, gdy wyrażenie Quartz Cron pasuje do ustawienia czasu i daty. Dzięki wyrażeniu Cron zdarzenie może zostać wywołane tylko raz lub w regularnych odstępach czasu.
Poniższa tabela zawiera wyrażenie daty i godziny sześciu wymaganych ustawień -
Atrybut | Wartość |
---|---|
sekundy | 0-59 |
Minuty | 0-59 |
godziny | 0-23 |
Dzień miesiąca | 1-31 |
Miesiąc | 1-12 lub JAN-DEC |
Dzień tygodnia | 1-7 lub SUN-SAT |
Niektóre przykłady wyrażeń Quartz Cron obsługiwanych przez punkt końcowy harmonogramu podano poniżej -
½ * * * * ? - oznacza, że harmonogram jest uruchamiany co 2 sekundy każdego dnia.
0 0/5 16 ** ? - oznacza, że program planujący uruchamia się co 5 minut od godziny 16:00 do 16:55 każdego dnia.
1 1 1 1, 5 * ? - oznacza, że harmonogram jest uruchamiany w pierwszym dniu stycznia i pierwszym dniu kwietnia każdego roku.
Przykład
Poniższy kod rejestruje komunikat „hi” co sekundę -
<flow name = "cronFlow" doc:id = "ae257a5d-6b4f-4006-80c8-e7c76d2f67a0">
<doc:name = "Scheduler" doc:id = "e7b6scheduler8ccb-c6d8-4567-87af-aa7904a50359">
<scheduling-strategy>
<cron expression = "* * * * * ?" timeZone = "America/Los_Angeles"/>
</scheduling-strategy>
</scheduler>
<logger level = "INFO" doc:name = "Logger"
doc:id = "e2626dbb-54a9-4791-8ffa-b7c9a23e88a1" message = '"hi"'/>
</flow>
Kontrola przepływu (routery)
Głównym zadaniem komponentu Flow Control jest przyjęcie zdarzenia wejściowego Mule i skierowanie go do jednej lub więcej oddzielnych sekwencji komponentów. Zasadniczo jest to kierowanie zdarzenia wejściowego Mule do innej sekwencji komponentów. Dlatego jest również nazywany routerami. Routery Choice i Scatter-Gather to najczęściej używane routery w ramach komponentu Flow Control.
Choice Router
Jak sugeruje nazwa, ten router stosuje logikę DataWeave, aby wybrać jedną z dwóch lub więcej tras. Jak wspomniano wcześniej, każda trasa jest oddzielną sekwencją procesorów zdarzeń Mule. Możemy zdefiniować routery wyboru jako router, który dynamicznie kieruje wiadomość przez przepływ zgodnie z zestawem wyrażeń DataWeave używanych do oceny treści wiadomości.
Schemat ideowy routera Choice
Efekt użycia routera Choice jest taki sam, jak dodanie przetwarzania warunkowego do przepływu lub pliku if/then/elseblok kodu w większości języków programowania. Poniżej znajduje się schemat ideowy routera Choice z trzema opcjami. Wśród nich jeden jest routerem domyślnym.
Router scatter-Gather
Innym najczęściej używanym procesorem zdarzeń routingu jest Scatter-Gather component. Jak sama nazwa wskazuje, działa na podstawach rozpraszania (kopiowania) i gromadzenia (konsolidacji). Możemy zrozumieć jego działanie za pomocą następujących dwóch punktów -
Po pierwsze, ten router kopiuje (Scatter) zdarzenie Mule na dwie lub więcej równoległych tras. Warunkiem jest to, że każda trasa musi być sekwencją co najmniej jednego procesora zdarzeń, co przypomina podstrumień. Każda trasa w tym przypadku utworzy wydarzenie Mule przy użyciu osobnego wątku. Każde zdarzenie Mule będzie miało swój własny ładunek, atrybuty i zmienne.
Następnie ten router gromadzi utworzone zdarzenia Mule z każdej trasy, a następnie konsoliduje je razem w nowe wydarzenie Mule. Następnie przekazuje to skonsolidowane wydarzenie Mule do następnego procesora zdarzeń. Tutaj warunek jest taki, że router SG przekaże skonsolidowane zdarzenie Mule do następnego procesora zdarzeń tylko wtedy, gdy każda trasa zostanie pomyślnie zakończona.
Schematyczny diagram routera Scatter-Gather
Poniżej znajduje się schematyczny diagram routera Scatter-Gather z czterema procesorami zdarzeń. Wykonuje każdą trasę równolegle, a nie sekwencyjnie.
Obsługa błędów przez router Scatter-Gather
Po pierwsze, musimy mieć wiedzę na temat rodzaju błędu, jaki można wygenerować w komponencie Scatter-Gather. Każdy błąd może zostać wygenerowany w procesorach zdarzeń, powodując, że składnik Scatter-Gather zgłosi błąd typuMule: COMPOSITE_ERROR. Ten błąd zostanie zgłoszony przez składnik SG tylko wtedy, gdy każda trasa ulegnie awarii lub zostanie ukończona.
Aby obsłużyć ten typ błędu, a try scopemoże być użyty w każdej trasie komponentu Scatter-Gather. Jeśli błąd zostanie pomyślnie obsłużony przeztry scope, wtedy trasa na pewno będzie mogła wygenerować zdarzenie Mule.
Transformers
Załóżmy, że jeśli chcemy ustawić lub usunąć część dowolnego wydarzenia Mule, komponent Transformer jest najlepszym wyborem. Komponenty transformatora są następujących typów -
Usuń transformator zmienny
Jak sama nazwa wskazuje, ten komponent przyjmuje nazwę zmiennej i usuwa tę zmienną ze zdarzenia Mule.
Konfigurowanie usuwania zmiennego transformatora
Poniższa tabela przedstawia nazwy pól i ich opis, które należy uwzględnić podczas konfigurowania usuwania transformatora zmiennego -
Sr.No | Pole i wyjaśnienie |
---|---|
1 | Display Name (doc:name) Możemy to dostosować, aby wyświetlać unikalną nazwę tego komponentu w naszym przepływie pracy Mule. |
2 | Name (variableName) Reprezentuje nazwę zmiennej do usunięcia. |
Ustaw transformator obciążenia
Z pomocą set-payloadkomponentu, możemy zaktualizować ładunek, który może być literałem lub wyrażeniem DataWeave wiadomości. Nie zaleca się używania tego składnika w przypadku złożonych wyrażeń lub przekształceń. Może być używany do prostych, takich jakselections.
Poniższa tabela przedstawia nazwy pól i ich opis, które należy uwzględnić podczas konfigurowania transformatora ustawionego ładunku -
Pole | Stosowanie | Wyjaśnienie |
---|---|---|
Wartość (wartość) | Obowiązkowy | Podana wartość jest wymagana do ustawienia ładunku. Akceptuje literał ciągu lub wyrażenie DataWeave definiujące sposób ustawiania ładunku. Przykłady są jak „jakiś ciąg” |
Typ MIME (mimeType) | Opcjonalny | Jest opcjonalne, ale reprezentuje typ MIME wartości przypisanej do ładunku wiadomości. Przykłady są jak tekst / zwykły. |
Kodowanie (kodowanie) | Opcjonalny | Jest również opcjonalny, ale reprezentuje kodowanie wartości przypisanej do ładunku wiadomości. Przykłady są podobne do UTF-8. |
Możemy ustawić ładunek poprzez kod konfiguracyjny XML -
With Static Content - Poniższy kod konfiguracyjny XML ustawi ładunek przy użyciu zawartości statycznej -
<set-payload value = "{ 'name' : 'Gaurav', 'Id' : '2510' }"
mimeType = "application/json" encoding = "UTF-8"/>
With Expression Content - Poniższy kod konfiguracyjny XML ustawi ładunek przy użyciu zawartości wyrażenia -
<set-payload value = "#['Hi' ++ ' Today is ' ++ now()]"/>
W powyższym przykładzie dzisiejsza data zostanie dołączona do ładunku wiadomości „Cześć”.
Ustaw transformator zmienny
Z pomocą set variablekomponentu, możemy utworzyć lub zaktualizować zmienną, aby przechowywać wartości, które mogą być prostymi wartościami literałów, takimi jak ciągi znaków, ładunki wiadomości lub obiekty atrybutów, do użytku w przepływie aplikacji Mule. Nie zaleca się używania tego składnika w przypadku złożonych wyrażeń lub przekształceń. Może być używany do prostych, takich jakselections.
Konfigurowanie ustawionego transformatora zmiennego
Poniższa tabela przedstawia nazwy pól i ich opis, które należy uwzględnić podczas konfigurowania transformatora ustawionego ładunku -
Pole | Stosowanie | Wyjaśnienie |
---|---|---|
Nazwa zmiennej (nazwa zmiennej) | Obowiązkowy | Jest wymagane i reprezentuje nazwę zmiennej. Nadając nazwę, należy postępować zgodnie z konwencją nazewnictwa, aby zawierała cyfry, znaki i podkreślenia. |
Wartość (wartość) | Obowiązkowy | Pole wartości jest wymagane do ustawienia zmiennej. Akceptuje dosłowny ciąg lub wyrażenie DataWeave. |
Typ MIME (mimeType) | Opcjonalny | Jest opcjonalna, ale reprezentuje typ MIME zmiennej. Przykłady są jak tekst / zwykły. |
Kodowanie (kodowanie) | Opcjonalny | Jest to również opcjonalne, ale reprezentuje kodowanie zmiennej. Przykłady są takie jak ISO 10646 / Unicode (UTF-8). |
Przykład
Poniższy przykład ustawi zmienną na ładunek wiadomości -
Variable Name = msg_var
Value = payload in Design center and #[payload] in Anypoint Studio
Podobnie, poniższy przykład ustawi zmienną na ładunek wiadomości -
Variable Name = msg_var
Value = attributes in Design center and #[attributes] in Anypoint Studio.
Usługa sieciowa REST
Pełna forma REST to Representational State Transfer, która jest powiązana z HTTP. Dlatego jeśli chcesz zaprojektować aplikację do użytku wyłącznie w Internecie, REST jest najlepszą opcją.
Zużywanie usług internetowych RESTful
W poniższym przykładzie będziemy używać komponentu REST i jednej publicznej usługi RESTful dostarczanej przez Mule Soft o nazwie American Flights details. Zawiera różne szczegóły, ale użyjemy GET:http://training-american-ws.cloudhub.io/api/flightsktóra zwróci wszystkie szczegóły lotu. Jak wspomniano wcześniej, REST jest powiązany z HTTP, dlatego potrzebujemy dwóch komponentów HTTP - jeden to Listener, a drugi to Request, również dla tej aplikacji. Poniższy zrzut ekranu przedstawia konfigurację dla nasłuchiwania HTTP -
Konfiguracja i przekazywanie argumentów
Konfiguracja dla żądania HTTP jest podana poniżej -
Teraz, zgodnie z naszym przepływem obszaru roboczego, wzięliśmy rejestrator, aby można go było skonfigurować jak poniżej -
Na karcie wiadomości piszemy kod, który konwertuje ładunek na ciągi.
Testowanie aplikacji
Teraz zapisz i uruchom aplikację i przejdź do POSTMAN, aby sprawdzić końcowe dane wyjściowe, jak pokazano poniżej -
Możesz zobaczyć, że podaje szczegóły lotu za pomocą komponentu REST.
Składnik SOAP
Pełna forma SOAP to Simple Object Access Protocol. Zasadniczo jest to specyfikacja protokołu przesyłania wiadomości służąca do wymiany informacji podczas wdrażania usług sieciowych. Następnie będziemy używać SOAP API w Anypoint Studio, aby uzyskać dostęp do informacji za pomocą usług internetowych.
Korzystanie z usług sieci Web opartych na protokole SOAP
W tym przykładzie użyjemy publicznej usługi SOAP o nazwie Country Info Service, która zachowuje usługi związane z informacjami o kraju. Jego adres WSDL to:http://www.oorsprong.org/websamples.countryinfo/countryinfoservice.wso?WSDL
Najpierw musimy przeciągnąć zużycie SOAP do naszego płótna z Mule Palette, jak pokazano poniżej -
Konfiguracja i przekazywanie argumentów
Następnie musimy skonfigurować żądanie HTTP, jak pokazano w powyższym przykładzie, jak podano poniżej -
Teraz musimy również skonfigurować konsumenta usługi sieci Web, jak pokazano poniżej -
W miejscu lokalizacji WSDL musimy podać adres internetowy WSDL, który jest podany powyżej (dla tego przykładu). Po podaniu adresu internetowego Studio samodzielnie wyszuka usługę, port i adres. Nie musisz podawać go ręcznie.
Przenieś odpowiedź z usługi sieci Web
W tym celu musimy dodać rejestrator w przepływie Mule i skonfigurować go do przekazywania ładunku, jak pokazano poniżej -
Testowanie aplikacji
Zapisz i uruchom aplikację i przejdź do Google Chrome, aby sprawdzić ostateczne wyniki. Rodzajhttp://localhist:8081/helloSOAP (w tym przykładzie) i pokaże nazwę kraju według kodu, jak pokazano na zrzucie ekranu poniżej -
Nowa obsługa błędów w Mule jest jedną z największych i głównych zmian wprowadzonych w Mule 4. Nowa obsługa błędów może wydawać się złożona, ale jest lepsza i wydajniejsza. W tym rozdziale omówimy składniki błędu Mule, typy błędów, kategorie błędów Mule oraz komponenty obsługi błędów Mule.
Składniki błędu Mule
Błąd Mule jest wynikiem niepowodzenia wyjątku Mule i składa się z następujących elementów -
Opis
Jest to ważny składnik błędu Mule, który da opis problemu. Jego wyraz jest następujący -
#[error.description]
Rodzaj
Składnik Type błędu Mule służy do scharakteryzowania problemu. Umożliwia także routing w ramach obsługi błędów. Jego wyraz jest następujący -
#[error.errorType]
Przyczyna
Składnik „Przyczyna” błędu Mule udostępnia bazowy element uruchamiający Java, który powoduje awarię. Jego wyraz jest następujący -
#[error.cause]
Wiadomość
Składnik Message błędu Mule zawiera opcjonalny komunikat dotyczący błędu. Jego wyraz jest następujący -
#[error.errorMessage]
Błędy dzieci
Składnik Child Errors błędu Mule zawiera opcjonalny zbiór błędów wewnętrznych. Te błędy wewnętrzne są używane głównie przez elementy takie jak Scatter-Gather do dostarczania zagregowanych błędów tras. Jego wyraz jest następujący -
#[error.childErrors]
Przykład
W przypadku niepowodzenia żądania HTTP z kodem stanu 401, błędy Mule są następujące:
Description: HTTP GET on resource ‘http://localhost:8181/TestApp’
failed: unauthorized (401)
Type: HTTP:UNAUTHORIZED
Cause: a ResponseValidatorTypedException instance
Error Message: { "message" : "Could not authorize the user." }
Sr.NO | Typ i opis błędu |
---|---|
1 | TRANSFORMATION Ten typ błędu wskazuje, że wystąpił błąd podczas przekształcania wartości. Transformacja jest wewnętrzną transformacją Mule Runtime, a nie transformacjami DataWeave. |
2 | EXPRESSION Ten rodzaj błędu wskazuje, że wystąpił błąd podczas oceniania wyrażenia. |
3 | VALIDATION Ten rodzaj błędu wskazuje, że wystąpił błąd weryfikacji. |
4 | DUPLICATE_MESSAGE Rodzaj błędu walidacji, który występuje, gdy wiadomość jest przetwarzana dwukrotnie. |
5 | REDELIVERY_EXHAUSTED Ten rodzaj błędu występuje, gdy została wyczerpana maksymalna liczba prób ponownego przetworzenia wiadomości ze źródła. |
6 | CONNECTIVITY Ten typ błędu wskazuje na problem podczas nawiązywania połączenia. |
7 | ROUTING Ten typ błędu wskazuje, że wystąpił błąd podczas kierowania wiadomości. |
8 | SECURITY Ten typ błędu wskazuje, że wystąpił błąd zabezpieczeń. Na przykład otrzymano nieprawidłowe poświadczenia. |
9 | STREAM_MAXIMUM_SIZE_EXCEEDED Ten typ błędu występuje, gdy maksymalny rozmiar dozwolony dla strumienia został wyczerpany. |
10 | TIMEOUT Wskazuje limit czasu podczas przetwarzania wiadomości. |
11 | UNKNOWN Ten typ błędu wskazuje, że wystąpił nieoczekiwany błąd. |
12 | SOURCE Reprezentuje wystąpienie błędu w źródle przepływu. |
13 | SOURCE_RESPONSE Reprezentuje wystąpienie błędu w źródle przepływu podczas przetwarzania pomyślnej odpowiedzi. |
W powyższym przykładzie możesz zobaczyć komponent wiadomości o błędzie mule.
Typy błędów
Pozwól nam zrozumieć typy błędów za pomocą ich cech -
Pierwszą cechą charakterystyczną typów błędów mułów jest to, że składają się one z obu: a namespace and an identifier. To pozwala nam rozróżnić typy według ich domeny. W powyższym przykładzie Typ błędu toHTTP: UNAUTHORIZED.
Drugą i ważną cechą jest to, że typ błędu może mieć typ nadrzędny. Na przykład Error TypeHTTP: UNAUTHORIZED ma MULE:CLIENT_SECURITY jako rodzic, który z kolei ma również nazwanego rodzica MULE:SECURITY. Ta cecha określa typ błędu jako specyfikację pozycji bardziej globalnej.
Rodzaje typów błędów
Poniżej znajdują się kategorie, do których należą wszystkie błędy -
KAŻDY
Błędy w tej kategorii to błędy, które mogą wystąpić w przepływie. Nie są tak poważne i można je łatwo obsługiwać.
KRYTYCZNY
Błędy w tej kategorii to poważne błędy, których nie można obsłużyć. Poniżej znajduje się lista typów błędów w tej kategorii -
Sr.NO | Typ i opis błędu |
---|---|
1 | OVERLOAD Ten typ błędu wskazuje, że wystąpił błąd z powodu problemu z przeciążeniem. W takim przypadku wykonanie zostanie odrzucone. |
2 | FATAL_JVM_ERROR Ten rodzaj błędu wskazuje na wystąpienie błędu krytycznego. Na przykład przepełnienie stosu. |
CUSTOM Error Type
NIESTANDARDOWE typy błędów to zdefiniowane przez nas błędy. Można je zdefiniować podczas mapowania lub zgłaszania błędów. Musimy nadać tym typom błędów określoną niestandardową przestrzeń nazw, aby odróżnić je od innych istniejących typów błędów w aplikacji Mule. Na przykład w aplikacji Mule korzystającej z protokołu HTTP nie możemy użyć protokołu HTTP jako niestandardowego typu błędu.
Kategorie błędów mułów
W szerokim sensie błędy w Mule można podzielić na dwie kategorie, a mianowicie: Messaging Errors and System Errors.
Błąd wiadomości
Ta kategoria błędu Mule jest związana z przepływem Mule. Ilekroć wystąpi problem w przepływie Mule, Mule zgłasza błąd wiadomości. Możemy założyćOn Error w komponencie obsługi błędów, aby obsłużyć te błędy Mule.
Błąd systemu
Błąd systemu wskazuje na wyjątek występujący na poziomie systemu. Jeśli nie ma zdarzenia Mule, błąd systemowy jest obsługiwany przez program obsługi błędów systemu. Następujący rodzaj wyjątków obsługiwanych przez program obsługi błędów systemu -
- Wyjątek występujący podczas uruchamiania aplikacji.
- Wyjątek, który występuje, gdy połączenie z systemem zewnętrznym nie powiedzie się.
W przypadku wystąpienia błędu systemu Mule wysyła powiadomienie o błędzie do zarejestrowanych słuchaczy. Rejestruje również błąd. Z drugiej strony Mule wykonuje strategię ponownego połączenia, jeśli błąd został spowodowany awarią połączenia.
Obsługa błędów Mule
Mule ma następujące dwa programy obsługi błędów do obsługi błędów -
Programy obsługi błędów w przypadku błędów
Pierwszą obsługą błędów Mule jest komponent On-Error, który definiuje typy błędów, które mogą obsłużyć. Jak wspomniano wcześniej, możemy skonfigurować komponenty On-Error wewnątrz komponentu Error Handler podobnego do zakresu. Każdy przepływ Mule zawiera tylko jedną procedurę obsługi błędów, ale ta procedura obsługi błędów może zawierać tyle zakresów On-Error, ile potrzebowaliśmy. Kroki obsługi błędu Mule w przepływie za pomocą komponentu On-Error są następujące:
Po pierwsze, ilekroć przepływ Mule wywoła błąd, normalne wykonanie przepływu zostaje zatrzymane.
Następnie proces zostanie przeniesiony do Error Handler Component które już mam On Error component aby dopasować typy błędów i wyrażenia.
W końcu składnik obsługi błędów kieruje błąd do pierwszego On Error scope który pasuje do błędu.
Poniżej znajdują się dwa typy komponentów działających w przypadku błędów obsługiwanych przez Mule -
Propaguj po błędzie
Składnik On-Error Propagate jest wykonywany, ale propaguje błąd do następnego poziomu i przerywa wykonywanie przez właściciela. Transakcja zostanie wycofana, jeśli jest obsługiwana przezOn Error Propagate składnik.
Kontynuuj w przypadku błędu
Podobnie jak składnik On-Error Propagate, składnik On-Error Continue również wykonuje transakcję. Jedynym warunkiem jest to, że jeśli właściciel pomyślnie zakończył wykonanie, komponent ten wykorzysta wynik wykonania jako wynik jego właściciela. Transakcja zostanie zatwierdzona, jeśli jest obsługiwana przez składnik Kontynuacja błędu.
Wypróbuj komponent zakresu
Try Scope to jedna z wielu nowych funkcji dostępnych w Mule 4. Działa podobnie do bloku try JAVA, w którym kiedyś umieszczaliśmy kod mający możliwość bycia wyjątkiem, dzięki czemu można go obsługiwać bez łamania całego kodu.
Możemy zawrzeć jeden lub więcej procesorów zdarzeń Mule w Try Scope, a następnie try scope przechwyci i obsłuży każdy wyjątek zgłoszony przez te procesory zdarzeń. Główne działanie try scope obraca się wokół własnej strategii obsługi błędów, która obsługuje obsługę błędów w jej wewnętrznym komponencie zamiast w całym przepływie. Dlatego nie musimy wyodrębniać przepływu do oddzielnego przepływu.
Example
Poniżej znajduje się przykład użycia try scope -
Konfigurowanie zakresu try do obsługi transakcji
Jak wiemy, transakcja to seria działań, które nigdy nie powinny być wykonywane częściowo. Wszystkie operacje w ramach transakcji są wykonywane w tym samym wątku i jeśli wystąpi błąd, powinien prowadzić do wycofania lub zatwierdzenia. Zakres try możemy skonfigurować w następujący sposób, aby traktować operacje potomne jako transakcję.
INDIFFERENT [Default]- Jeśli wybierzemy tę konfigurację w bloku try, to akcje potomne nie będą traktowane jako transakcja. W takim przypadku błąd nie powoduje ani wycofania, ani zatwierdzeń.
ALWAYS_BEGIN - Wskazuje, że nowa transakcja zostanie uruchomiona za każdym razem, gdy zakres zostanie wykonany.
BEGIN_OR_JOIN- Wskazuje, że jeśli bieżące przetwarzanie przepływu już rozpoczęło transakcję, dołącz do niej. W przeciwnym razie rozpocznij nowy.
W przypadku każdego projektu wyjątek jest taki, że na pewno się wydarzy. Dlatego ważne jest, aby wychwytywać, kategoryzować i obsługiwać wyjątki, aby system / aplikacja nie pozostała w niespójnym stanie. Istnieje domyślna strategia wyjątków, która jest domyślnie stosowana do wszystkich aplikacji Mule. Automatyczne wycofywanie wszystkich oczekujących transakcji jest domyślną strategią wyjątków.
Wyjątki w Mule
Zanim zagłębimy się w wyjątkową obsługę, powinniśmy zrozumieć, jakiego rodzaju wyjątki mogą wystąpić, wraz z trzema podstawowymi pytaniami, które programista musi mieć podczas projektowania procedur obsługi wyjątków.
Który transport jest ważny?
To pytanie ma duże znaczenie przed zaprojektowaniem procedur obsługi wyjątków, ponieważ wszystkie transporty nie obsługują ponadnarodowości.
File lub HTTPnie obsługuje transakcji. Dlatego jeśli w takich przypadkach wystąpi wyjątek, musimy nim zarządzać ręcznie.
Databasesobsługiwać transakcje. Projektując procedury obsługi wyjątków w tym przypadku, musimy pamiętać, że transakcje bazy danych mogą automatycznie wycofywać się (jeśli jest to wymagane).
W przypadku REST APIs, powinniśmy pamiętać, że powinny zwracać prawidłowe kody stanu HTTP. Na przykład 404 dla nieznalezionego zasobu.
Który wzorzec wymiany wiadomości ma być używany?
Projektując procedury obsługi wyjątków, musimy zadbać o wzorzec wymiany komunikatów. Może istnieć synchroniczny (żądanie-odpowiedź) lub asynchroniczny (zapomnienie po uruchomieniu) wzorzec komunikatów.
Synchronous message pattern jest oparty na formacie żądanie-odpowiedź, co oznacza, że ten wzorzec będzie oczekiwał odpowiedzi i będzie blokowany do czasu zwrócenia odpowiedzi lub przekroczenia limitu czasu.
Asynchronous message pattern jest oparty na formacie fire-zapomnij, co oznacza, że ten wzorzec zakłada, że żądania zostaną ostatecznie przetworzone.
Jaki to wyjątek?
Bardzo prosta zasada jest taka, że będziesz obsługiwać wyjątek na podstawie jego typu. Bardzo ważne jest, aby wiedzieć, czy wyjątek jest spowodowany problemem systemowym / technicznym czy biznesowym?
Wystąpił wyjątek przez system/technical issue (np. awaria sieci) powinna być obsługiwana automatycznie przez mechanizm ponawiania.
Z drugiej strony wystąpił wyjątek by a business issue (takich jak nieprawidłowe dane) nie należy rozwiązywać przez zastosowanie mechanizmu ponawiania, ponieważ ponawianie próby bez naprawienia przyczyny nie jest przydatne.
Dlaczego należy kategoryzować wyjątki?
Ponieważ wiemy, że wszystkie wyjątki nie są takie same, bardzo ważne jest skategoryzowanie wyjątków. Na wysokim poziomie wyjątki można podzielić na następujące dwa typy:
Wyjątki biznesowe
Głównymi przyczynami występowania wyjątków biznesowych są niepoprawne dane lub nieprawidłowy przebieg procesów. Tego rodzaju wyjątki mają zwykle charakter nieodwracalny, dlatego nie jest dobrze konfigurować plikrollback. Nawet aplikującretryMechanizm nie miałby sensu, ponieważ ponawianie próby bez naprawienia przyczyny nie jest przydatne. Aby obsłużyć takie wyjątki, przetwarzanie powinno zostać natychmiast zatrzymane, a wyjątek odesłany jako odpowiedź na kolejkę utraconych wiadomości. Powiadomienie należy również przesłać do operacji.
Wyjątki niezwiązane z działalnością biznesową
Głównymi przyczynami występowania wyjątków niezwiązanych z działalnością biznesową są problemy systemowe lub techniczne. Tego rodzaju wyjątki są z natury odtwarzalne, dlatego dobrze jest skonfigurować plikretry mechanizm w celu rozwiązania tych wyjątków.
Strategie obsługi wyjątków
Mule ma pięć następujących strategii obsługi wyjątków -
Domyślna strategia wyjątków
Mule implicite stosuje tę strategię do przepływów Mule. Może obsługiwać wszystkie wyjątki w naszym przepływie, ale można go również przesłonić, dodając strategię wyjątku catch, Choice lub Rollback. Ta strategia wyjątków spowoduje wycofanie wszystkich oczekujących transakcji i zarejestrowanie również wyjątków. Ważną cechą tej strategii wyjątków jest to, że rejestruje ona również wyjątek, jeśli nie ma transakcji.
Jako strategia domyślna, Mule implementuje ją, gdy wystąpi jakikolwiek błąd w przepływie. Nie możemy konfigurować w studiu AnyPoint.
Strategia wycofywania wyjątków
Przypuśćmy, że jeśli nie ma możliwości naprawienia błędu, to co zrobić? Rozwiązaniem jest użycie strategii wycofywania wyjątków, która spowoduje wycofanie transakcji wraz z wysłaniem komunikatu do łącznika przychodzącego przepływu nadrzędnego w celu ponownego przetworzenia komunikatu. Ta strategia jest również bardzo przydatna, gdy chcemy ponownie przetworzyć wiadomość.
Example
Tę strategię można zastosować do transakcji bankowych, w których środki są zdeponowane na rachunku bieżącym / oszczędnościowym. Możemy tutaj skonfigurować strategię wyjątków wycofywania, ponieważ w przypadku wystąpienia błędu podczas transakcji strategia ta cofa komunikat z powrotem do początku do przepływu w celu ponownego przetworzenia.
Strategia połowu wyjątków
Ta strategia przechwytuje wszystkie wyjątki, które są zgłaszane w jej przepływie nadrzędnym. Zastępuje domyślną strategię wyjątków Mule, przetwarzając wszystkie wyjątki zgłoszone przez przepływ nadrzędny. Możemy użyć strategii wyjątków catch, aby uniknąć propagowania wyjątków do łączników przychodzących i przepływów nadrzędnych.
Ta strategia zapewnia również, że transakcja przetwarzana przez przepływ nie jest wycofywana w przypadku wystąpienia wyjątku.
Example
Strategię tę można zastosować do systemu rezerwacji lotów, w którym mamy przepływ do przetwarzania komunikatów z kolejki. Moduł wzbogacający wiadomości dodaje właściwość do wiadomości w celu przypisania miejsca, a następnie wysyła wiadomość do innej kolejki.
Teraz, jeśli w tym przepływie wystąpi jakikolwiek błąd, komunikat zgłosi wyjątek. Tutaj nasza strategia wyjątków catch może dodać nagłówek z odpowiednim komunikatem i może wypchnąć ten komunikat z przepływu do następnej kolejki.
Strategia wyboru wyjątków
Jeśli chcesz obsłużyć wyjątek na podstawie treści wiadomości, najlepszym wyborem będzie strategia wyboru wyjątków. Działanie tej strategii wyjątków będzie następujące -
- Po pierwsze, przechwytuje wszystkie wyjątki zgłaszane w przepływie nadrzędnym.
- Następnie sprawdza zawartość wiadomości i typ wyjątku.
- W końcu kieruje wiadomość do odpowiedniej strategii wyjątków.
Byłoby więcej niż jedna strategia wyjątku, taka jak Catch lub Rollback, zdefiniowana w ramach strategii wyjątków wyboru. W przypadku braku strategii zdefiniowanej w ramach tej strategii wyjątku, komunikat zostanie skierowany do domyślnej strategii wyjątku. Nigdy nie wykonuje żadnych działań związanych z zatwierdzaniem, wycofywaniem ani konsumowaniem.
Odniesienie do strategii wyjątków
Odnosi się to do typowej strategii wyjątków, która jest zdefiniowana w oddzielnym pliku konfiguracyjnym. W przypadku, gdy komunikat zgłasza wyjątek, ta strategia wyjątku będzie odnosić się do parametrów obsługi błędów zdefiniowanych w globalnej strategii wyjątku catch, rollback lub choice. Podobnie jak strategia wyjątków wyboru, nigdy nie wykonuje również żadnych działań zatwierdzania, wycofywania ani konsumowania.
Rozumiemy, że testowanie jednostkowe to metoda, za pomocą której można przetestować poszczególne jednostki kodu źródłowego w celu określenia, czy nadają się do użycia, czy nie. Programiści Java mogą używać frameworka Junit do pisania przypadków testowych. Podobnie MuleSoft ma również strukturę o nazwie MUnit, która pozwala nam pisać zautomatyzowane przypadki testowe dla naszych interfejsów API i integracji. Jest to idealne rozwiązanie dla środowiska ciągłej integracji / wdrażania. Jedną z największych zalet frameworka MUnit jest to, że możemy go zintegrować z Maven i Surefire.
Funkcje MUnit
Oto niektóre z bardzo przydatnych funkcji platformy testowej Mule MUnit -
W frameworku MUnit możemy stworzyć nasz test Mule, używając kodu Mule, a także kodu Java.
Możemy projektować i testować nasze aplikacje i interfejsy API Mule, graficznie lub w formacie XML, w ramach Anypoint Studio.
MUnit pozwala nam łatwo zintegrować testy z istniejącym procesem CI / CD.
Zapewnia generowane automatycznie testy i raporty pokrycia; stąd praca ręczna jest minimalna.
Możemy również użyć lokalnych serwerów DB / FTP / poczty, aby testowanie było bardziej przenośne w procesie CI.
Pozwala nam włączać lub wyłączać testy.
Możemy również rozszerzyć framework MUnit o wtyczki.
Umożliwia nam weryfikację wywołań procesora wiadomości.
Za pomocą platformy testowej MUnit możemy wyłączyć łączniki punktów końcowych, a także przepływ przychodzących punktów końcowych.
Możemy sprawdzić raporty o błędach za pomocą śladu stosu Mule.
Najnowsza wersja platformy testowej Mule MUnit
MUnit 2.1.4 to najnowsza wersja platformy testowej Mule MUnit. Wymaga następujących wymagań sprzętowych i programowych -
- MS Windows 8+
- Apple Mac OS X 10.10+
- Linux
- Java 8
- Maven 3.3.3, 3.3.9, 3.5.4, 3.6.0
Jest kompatybilny z Mule 4.1.4 i Anypoint Studio 7.3.0.
MUnit i Anypoint Studio
Jak już wspomniano, MUnit jest w pełni zintegrowany ze studiem Anypoint i możemy projektować i testować nasze aplikacje i API Mule graficznie lub w formacie XML w ramach Anypoint Studio. Innymi słowy, możemy użyć interfejsu graficznego Anypoint Studio, aby wykonać następujące czynności -
- Do tworzenia i projektowania testów MUnit
- Do przeprowadzania naszych testów
- Do przeglądania wyników testów oraz raportu pokrycia
- Do debugowania testów
Zacznijmy więc kolejno omawiać każde zadanie.
Tworzenie i projektowanie testów MUnit
Po uruchomieniu nowego projektu automatycznie doda nowy folder, a mianowicie src/test/munitdo naszego projektu. Na przykład rozpoczęliśmy nowy projekt Mule, a mianowicietest_munit, widać na poniższym obrazku, dodaje wyżej wymieniony folder pod naszym projektem.
Teraz, po rozpoczęciu nowego projektu, istnieją dwa podstawowe sposoby tworzenia nowego testu MUnit w Anypoint Studio -
By Right-Clicking the Flow - W tej metodzie musimy kliknąć prawym przyciskiem myszy określony przepływ i wybrać MUnit z menu rozwijanego.
By Using the Wizard- W tej metodzie do stworzenia testu musimy skorzystać z kreatora. Pozwala nam stworzyć test dla dowolnego przepływu w obszarze roboczym.
Zamierzamy użyć metody „Kliknij przepływ prawym przyciskiem myszy”, aby utworzyć test dla określonego przepływu.
Najpierw musimy utworzyć przepływ w obszarze roboczym w następujący sposób -
Teraz kliknij prawym przyciskiem myszy ten przepływ i wybierz MUnit, aby utworzyć test dla tego przepływu, jak pokazano poniżej -
Spowoduje to utworzenie nowego zestawu testów nazwanego na podstawie pliku XML, w którym znajduje się przepływ. W tym przypadku,test_munit-test-suite to nazwa nowego zestawu testów, jak pokazano poniżej -
Poniżej znajduje się edytor XML dla powyższego przepływu komunikatów -
Teraz możemy dodać plik MUnit procesor wiadomości do zestawu testów, przeciągając go z palety Mule.
Jeśli chcesz utworzyć test za pomocą kreatora, wykonaj następujące czynności File → New → MUnit i doprowadzi Cię do następującego zestawu testowego MUnit -
Konfiguracja testu
W Mule 4 mamy dwie nowe sekcje, a mianowicie MUnit i MUnit Tools, łącznie mając cały procesor komunikatów MUnit. Możesz przeciągnąć dowolny procesor komunikatów do obszaru testowego MUnit. Jest to pokazane na poniższym zrzucie ekranu -
Teraz, jeśli chcesz edytować konfigurację swojego skafandra lub testować w Anypoint Studio, musisz wykonać poniższe kroki -
Step 1
Przejdź do Package Explorer i kliknij prawym przyciskiem myszy .xml filedla swojego pakietu lub testu. Następnie wybierz plikProperties.
Step 2
Teraz w oknie Właściwości musimy kliknąć Run/Debug Settings. Po tym kliknijNew.
Step 3
W ostatnim kroku kliknij MUnit pod Select Configuration Type okno, a następnie kliknij OK.
Uruchamianie testu
Możemy uruchomić zestaw testów, a także test. Najpierw zobaczymy, jak uruchomić zestaw testów.
Uruchamianie zestawu testów
Aby uruchomić zestaw testów, kliknij prawym przyciskiem myszy pustą część Mule Canvas, w której znajduje się zestaw testów. Otworzy się menu rozwijane. Teraz kliknijRun MUnit suite jak pokazano poniżej -
Później możemy zobaczyć wynik w konsoli.
Przeprowadzanie testu
Aby uruchomić konkretny test, musimy wybrać konkretny test i kliknąć go prawym przyciskiem myszy. Otrzymamy to samo menu rozwijane, które otrzymaliśmy podczas uruchamiania zestawu testów. Teraz kliknijRun MUnit Test opcja, jak pokazano poniżej -
Tam po wyjściu można zobaczyć w konsoli.
Przeglądanie i analizowanie wyników testu
Anypoint Studio wyświetla wynik testu MUnit w pliku MUnit tabpanelu eksploratora po lewej stronie. Udane testy można znaleźć w kolorze zielonym, a testy zakończone niepowodzeniem w kolorze czerwonym, jak pokazano poniżej -
Możemy przeanalizować wynik naszego testu, przeglądając raport pokrycia. Główną funkcją raportu pokrycia jest dostarczanie miary określającej, jaka część aplikacji Mule została pomyślnie wykonana przez zestaw testów MUnit. Pokrycie MUnit jest zasadniczo oparte na liczbie wykonanych procesorów komunikatów MUnit. Raport pokrycia MUnit zawiera dane dotyczące następujących elementów -
- Ogólny zasięg aplikacji
- Pokrycie zasobów
- Pokrycie przepływu
Aby uzyskać raport pokrycia, musimy kliknąć `` Generuj raport '' w zakładce MUnit, jak pokazano poniżej -
Debugowanie testu
Możemy debugować zestaw testów, a także test. Najpierw zobaczymy, jak debugować zestaw testów.
Debugowanie zestawu testów
Aby debugować zestaw testów, kliknij prawym przyciskiem myszy pustą część płótna Mule, w której znajduje się zestaw testów. Otworzy się menu rozwijane. Teraz kliknijDebug MUnit Suite jak pokazano na poniższym obrazku -
Następnie możemy zobaczyć dane wyjściowe w konsoli.
Debugowanie testu
Aby debugować określony test, musimy wybrać konkretny test i kliknąć go prawym przyciskiem myszy. Otrzymamy to samo menu rozwijane, które otrzymaliśmy podczas debugowania zestawu testów. Teraz kliknijDebug MUnit Testopcja. Jest to pokazane na poniższym zrzucie ekranu.