Wysyłanie powiązanych komunikatów w kolejności przy użyciu konwoju sekwencyjnego w usłudze Azure Logic Apps z Azure Service Bus
Dotyczy: Azure Logic Apps (zużycie)
Gdy musisz wysłać skorelowane komunikaty w określonej kolejności, możesz postępować zgodnie ze wzorcem konwoju sekwencyjnego podczas korzystania z usługi Azure Logic Apps przy użyciu łącznika Azure Service Bus. Skorelowane komunikaty mają właściwość definiującą relację między tymi komunikatami, taką jak identyfikator sesji w usłudze Service Bus.
Załóżmy na przykład, że masz 10 komunikatów dla sesji o nazwie "Sesja 1" i masz 5 komunikatów dla sesji o nazwie "Sesja 2", które są wysyłane do tej samej kolejki usługi Service Bus. Możesz utworzyć aplikację logiki, która przetwarza komunikaty z kolejki, tak aby wszystkie komunikaty z sesji "Sesja 1" są obsługiwane przez pojedyncze uruchomienie wyzwalacza, a wszystkie komunikaty z sesji 2 są obsługiwane przez następne uruchomienie wyzwalacza.
W tym artykule pokazano, jak utworzyć aplikację logiki, która implementuje ten wzorzec przy użyciu szablonu Skorelowanego dostarczania w kolejności przy użyciu szablonu sesji usługi Service Bus . Ten szablon definiuje przepływ pracy aplikacji logiki, który rozpoczyna się od łącznika usługi Service Bus Po odebraniu komunikatu w wyzwalaczu kolejki (peek-lock), który odbiera komunikaty z kolejki usługi Service Bus. Poniżej przedstawiono ogólne kroki wykonywane przez tę aplikację logiki:
Zainicjuj sesję na podstawie komunikatu, który wyzwalacz odczytuje z kolejki usługi Service Bus.
Odczytywanie i przetwarzanie wszystkich komunikatów z tej samej sesji w kolejce podczas bieżącego przebiegu przepływu pracy.
Aby przejrzeć plik JSON tego szablonu, zobacz GitHub: service-bus-sessions.json.
Aby uzyskać więcej informacji, zobacz Sekwencyjny wzorzec konwoju — Wzorce projektowania chmury architektury platformy Azure.
Wymagania wstępne
Subskrypcja platformy Azure. Jeśli nie masz subskrypcji, zarejestruj się w celu założenia bezpłatnego konta platformy Azure.
Przestrzeń nazw usługi Service Bus i kolejka usługi Service Bus, która jest jednostką obsługi komunikatów, która będzie używana w aplikacji logiki. Te elementy i aplikacja logiki muszą używać tej samej subskrypcji platformy Azure. Upewnij się, że podczas tworzenia kolejki wybrano pozycję Włącz sesje . Jeśli nie masz tych elementów, dowiedz się, jak utworzyć przestrzeń nazw usługi Service Bus i kolejkę.
Ważne
Należy zachować ostrożność podczas wybierania wyzwalacza i akcji, która ma ten sam typ łącznika i używać ich do pracy z tą samą jednostką, taką jak kolejka komunikatów lub subskrypcja tematu. Ta kombinacja może utworzyć nieskończoną pętlę, co powoduje, że aplikacja logiki nigdy nie kończy się.
Podstawowa wiedza na temat tworzenia aplikacji logiki. Jeśli dopiero zaczynasz korzystać z usługi Azure Logic Apps, wypróbuj przewodnik Szybki start, który tworzy przykładowy przepływ pracy aplikacji logiki Zużycie w wielodostępnej usłudze Azure Logic Apps.
Sprawdzanie dostępu do przestrzeni nazw usługi Service Bus
Jeśli nie masz pewności, czy aplikacja logiki ma uprawnienia dostępu do przestrzeni nazw usługi Service Bus, potwierdź te uprawnienia.
Zaloguj się do Azure portal. Znajdź i wybierz przestrzeń nazw usługi Service Bus.
W menu przestrzeni nazw w obszarze Ustawienia wybierz pozycję Zasady dostępu współdzielonego. W obszarze Oświadczenia sprawdź, czy masz uprawnienia Zarządzaj dla tej przestrzeni nazw.
Teraz pobierz parametry połączenia dla przestrzeni nazw usługi Service Bus. Te parametry można później użyć podczas tworzenia połączenia z przestrzenią nazw z poziomu aplikacji logiki.
W okienku Zasady dostępu współdzielonego w obszarze Zasady wybierz pozycję RootManageSharedAccessKey.
Obok podstawowych parametrów połączenia wybierz przycisk kopiowania. Zapisz parametry połączenia do późniejszego użycia.
Porada
Aby sprawdzić, czy parametry połączenia są skojarzone z przestrzenią nazw usługi Service Bus, czy jednostką obsługi komunikatów, taką jak kolejka, wyszukaj parametry połączenia dla parametru
EntityPath
. Jeśli znajdziesz ten parametr, parametry połączenia są przeznaczone dla określonej jednostki i nie są prawidłowymi parametrami do użycia z aplikacją logiki.
Tworzenie aplikacji logiki
W tej sekcji utworzysz aplikację logiki przy użyciu szablonu Skorelowane dostarczanie w kolejności przy użyciu szablonu sesji usługi Service Bus , który zawiera wyzwalacz i akcje służące do implementowania tego wzorca przepływu pracy. Utworzysz również połączenie z przestrzenią nazw usługi Service Bus i określ nazwę kolejki usługi Service Bus, której chcesz użyć.
W Azure Portal utwórz pustą aplikację logiki. Na stronie głównej platformy Azure wybierz pozycję Utwórz aplikacjęlogikiintegracji> zasobów>.
Po wyświetleniu galerii szablonów przewiń obok filmu wideo i typowe sekcje wyzwalaczy. W sekcji Szablony wybierz szablon Skorelowane dostarczanie w kolejności przy użyciu sesji usługi Service Bus.
Po wyświetleniu pola potwierdzenia wybierz pozycję Użyj tego szablonu.
W projektancie aplikacji logiki w kształcie usługi Service Bus wybierz pozycję Kontynuuj, a następnie wybierz znak plus (+), który jest wyświetlany w kształcie.
Teraz utwórz połączenie usługi Service Bus, wybierając jedną z opcji:
Aby użyć parametrów połączenia skopiowanych wcześniej z przestrzeni nazw usługi Service Bus, wykonaj następujące kroki:
Wybierz pozycję Ręcznie wprowadź informacje o połączeniu.
W polu Nazwa połączenia podaj nazwę połączenia. W polu Parametry połączenia wklej parametry połączenia przestrzeni nazw i wybierz pozycję Utwórz, na przykład:
Porada
Jeśli nie masz tych parametrów połączenia, dowiedz się, jak znaleźć i skopiować parametry połączenia przestrzeni nazw usługi Service Bus.
Aby wybrać przestrzeń nazw usługi Service Bus z bieżącej subskrypcji platformy Azure, wykonaj następujące kroki:
W polu Nazwa połączenia podaj nazwę połączenia. W polu Przestrzeń nazw usługi Service Bus wybierz przestrzeń nazw usługi Service Bus, na przykład:
Po wyświetleniu następnego okienka wybierz zasady usługi Service Bus i wybierz pozycję Utwórz.
Po zakończeniu wybierz pozycję Kontynuuj.
Projektant aplikacji logiki pokazuje teraz skorelowane dostarczanie w kolejności przy użyciu szablonu sesji usługi Service Bus , który zawiera wstępnie wypełniony przepływ pracy z wyzwalaczem i akcjami, w tym dwa zakresy implementujące obsługę błędów, które są zgodne ze wzorcem
Try-Catch
.
Teraz możesz dowiedzieć się więcej na temat wyzwalacza i akcji w szablonie lub przejść do przodu, aby podać wartości szablonu aplikacji logiki.
Podsumowanie szablonu
Oto przepływ pracy najwyższego poziomu w skorelowanym dostarczaniu w kolejności przy użyciu szablonu sesji usługi Service Bus po zwinięciu szczegółów:
Nazwa | Opis |
---|---|
When a message is received in a queue (peek-lock) |
Na podstawie określonego cyklu ten wyzwalacz usługi Service Bus sprawdza określoną kolejkę usługi Service Bus dla wszystkich komunikatów. Jeśli komunikat istnieje w kolejce, wyzwalacz zostanie wyzwolony, co spowoduje utworzenie i uruchomienie wystąpienia przepływu pracy. Termin peek-lock oznacza, że wyzwalacz wysyła żądanie pobrania komunikatu z kolejki. Jeśli komunikat istnieje, wyzwalacz pobiera i blokuje komunikat, tak aby żadne inne przetwarzanie nie odbywało się na tym komunikacie do momentu wygaśnięcia okresu blokady. Aby uzyskać szczegółowe informacje, zainicjuj sesję. |
Init isDone |
Ta akcja Inicjowanie zmiennej tworzy zmienną logiczną ustawioną na false i wskazuje, kiedy spełnione są następujące warunki:— Do odczytu nie są dostępne żadne komunikaty w sesji. Aby uzyskać szczegółowe informacje, zobacz Inicjowanie sesji. |
Try |
Ta akcja Zakres zawiera akcje uruchamiane w celu przetworzenia komunikatu. Jeśli problem występuje w Try zakresie, kolejna Catch akcja Zakres obsługuje ten problem. Aby uzyskać więcej informacji, zobacz zakres "Wypróbuj". |
Catch |
Ta akcja Zakres zawiera akcje uruchamiane w przypadku wystąpienia problemu w poprzednim Try zakresie. Aby uzyskać więcej informacji, zobacz zakres "Catch". |
Zakres "Wypróbuj"
Oto przepływ najwyższego Try
poziomu w akcji zakresu po zwinięciu szczegółów:
Nazwa | Opis |
---|---|
Send initial message to topic |
Tę akcję można zastąpić dowolną akcją, którą chcesz obsłużyć pierwszy komunikat z sesji w kolejce. Identyfikator sesji określa sesję. W przypadku tego szablonu akcja usługi Service Bus wysyła pierwszy komunikat do tematu usługi Service Bus. Aby uzyskać szczegółowe informacje, zobacz Obsługa początkowego komunikatu. |
(gałąź równoległa) | Ta akcja gałęzi równoległej tworzy dwie ścieżki: - Gałąź nr 1: Kontynuuj przetwarzanie komunikatu. Aby uzyskać więcej informacji, zobacz Branch #1: Complete initial message in queue (Gałąź nr 1: ukończ początkowy komunikat w kolejce). - Gałąź nr 2: Porzucanie komunikatu, jeśli coś pójdzie nie tak, i wydanie odbioru przez inny przebieg wyzwalacza. Aby uzyskać więcej informacji, zobacz Branch #2: Porzucenie początkowego komunikatu z kolejki. Obie ścieżki łączą się w dalszej części sesji Zamknij w kolejce i zakończą akcję, opisaną w następnym wierszu. |
Close a session in a queue and succeed |
Ta akcja usługi Service Bus łączy wcześniej opisane gałęzie i zamyka sesję w kolejce po wystąpieniu jednego z następujących zdarzeń: — Przepływ pracy kończy przetwarzanie dostępnych komunikatów w kolejce. Aby uzyskać szczegółowe informacje, zobacz Zamykanie sesji w kolejce i powodzenie. |
Gałąź nr 1: Ukończ początkowy komunikat w kolejce
Nazwa | Opis |
---|---|
Complete initial message in queue |
Ta akcja usługi Service Bus oznacza pomyślnie pobrany komunikat jako ukończony i usuwa komunikat z kolejki, aby zapobiec ponownemu przetwarzaniu. Aby uzyskać szczegółowe informacje, zobacz Obsługa początkowego komunikatu. |
While there are more messages for the session in the queue |
Ta pętla Do nadal pobiera komunikaty, gdy komunikaty istnieją lub do jednej godziny mija. Aby uzyskać więcej informacji na temat akcji w tej pętli, zobacz While there are more messages for the session in the queue (Chociaż w kolejce znajduje się więcej komunikatów dotyczących sesji). |
Set isDone = true |
Jeśli nie ma więcej komunikatów, ta akcja Ustaw zmienną ustawia isDone wartość true . |
Renew session lock until cancelled |
Ta pętla Do zapewnia, że blokada sesji jest przechowywana przez tę aplikację logiki, gdy komunikaty istnieją lub do jednej godziny mijają. Aby uzyskać więcej informacji na temat akcji w tej pętli, zobacz Odnawianie blokady sesji do momentu anulowania. |
Gałąź nr 2: Porzucenie początkowego komunikatu z kolejki
Jeśli akcja, która obsługuje pierwszy komunikat zakończy się niepowodzeniem, akcja usługi Service Bus, Porzucenie początkowego komunikatu z kolejki, zwalnia komunikat dla innego wystąpienia przepływu pracy, aby odebrać i przetworzyć. Aby uzyskać szczegółowe informacje, zobacz Obsługa początkowego komunikatu.
Zakres "Catch"
Jeśli akcje w zakresie zakończą się niepowodzeniem Try
, aplikacja logiki musi nadal zamknąć sesję. Akcja Catch
zakresu jest uruchamiana, gdy Try
akcja zakresu powoduje wyświetlenie stanu, Failed
, Skipped
lub TimedOut
. Zakres zwraca komunikat o błędzie zawierający identyfikator sesji, w którym wystąpił problem, i kończy aplikację logiki.
Oto przepływ najwyższego Catch
poziomu w akcji zakresu po zwinięciu szczegółów:
Nazwa | Opis |
---|---|
Close a session in a queue and fail |
Ta akcja usługi Service Bus zamyka sesję w kolejce, aby blokada sesji nie została otwarta. Aby uzyskać szczegółowe informacje, zobacz Zamykanie sesji w kolejce i niepowodzenie. |
Find failure msg from 'Try' block |
Ta akcja Filtrowanie tablicy tworzy tablicę na podstawie danych wejściowych i wyjściowych ze wszystkich akcji wewnątrz Try zakresu na podstawie określonych kryteriów. W takim przypadku ta akcja zwraca dane wyjściowe z akcji, które spowodowały Failed stan. Aby uzyskać szczegółowe informacje, zobacz Znajdowanie błędu msg z bloku "Wypróbuj". |
Select error details |
Ta akcja Select tworzy tablicę zawierającą obiekty JSON na podstawie określonych kryteriów. Te obiekty JSON są tworzone na podstawie wartości w tablicy utworzonej przez poprzednią akcję Find failure msg from 'Try' block . W takim przypadku ta akcja zwraca tablicę zawierającą obiekt JSON utworzony na podstawie szczegółów błędu zwróconych z poprzedniej akcji. Aby uzyskać szczegółowe informacje, zobacz Wybieranie szczegółów błędu. |
Terminate |
Ta akcja Zakończ zatrzymuje przebieg przepływu pracy, anuluje wszelkie akcje w toku, pomija wszelkie pozostałe akcje i zwraca określony stan, identyfikator sesji i wynik błędu z Select error details akcji. Aby uzyskać szczegółowe informacje, zobacz Kończenie działania aplikacji logiki. |
Ukończ szablon
Aby podać wartości wyzwalacza i akcji w szablonie Skorelowane dostarczanie w kolejności przy użyciu sesji usługi Service Bus , wykonaj następujące kroki. Przed zapisaniem aplikacji logiki musisz podać wszystkie wymagane wartości, które są oznaczone gwiazdką (*).
Inicjowanie sesji
W przypadku wyzwalacza Po odebraniu komunikatu w kolejce (podgląd blokady) podaj te informacje, aby szablon mógł zainicjować sesję przy użyciu właściwości Identyfikator sesji , na przykład:
Uwaga
Początkowo interwał sondowania jest ustawiony na trzy minuty, dzięki czemu aplikacja logiki nie jest uruchamiana częściej niż oczekiwano i powoduje nieprzewidziane opłaty za rozliczenia. Najlepiej ustawić interwał i częstotliwość na 30 sekund, aby aplikacja logiki wyzwalała natychmiast po nadejściu komunikatu.
Właściwość Wymagane dla tego scenariusza Wartość Opis Nazwa kolejki Tak <nazwa kolejki> Nazwa utworzonej wcześniej kolejki usługi Service Bus. W tym przykładzie użyto ciągu "Fabrikam-Service-Bus-Queue". Typ kolejki Tak Główne Podstawowa kolejka usługi Service Bus Identyfikator sesji Tak Następna dostępna Ta opcja pobiera sesję dla każdego uruchomienia wyzwalacza na podstawie identyfikatora sesji z komunikatu w kolejce usługi Service Bus. Sesja jest również zablokowana, aby żadna inna aplikacja logiki lub inny klient nie mógł przetwarzać komunikatów związanych z tą sesją. Kolejne akcje przepływu pracy przetwarzają wszystkie komunikaty skojarzone z tą sesją, zgodnie z opisem w dalszej części tego artykułu. Oto więcej informacji na temat innych opcji identyfikatora sesji :
- Brak: opcja domyślna, która powoduje brak sesji i nie można jej używać do implementowania wzorca konwoju sekwencyjnego.
- Wprowadź wartość niestandardową: użyj tej opcji, gdy znasz identyfikator sesji, którego chcesz użyć, i zawsze chcesz uruchomić wyzwalacz dla tego identyfikatora sesji.
Uwaga: łącznik usługi Service Bus może zapisywać ograniczoną liczbę unikatowych sesji w czasie od Azure Service Bus do pamięci podręcznej łącznika. Jeśli liczba sesji przekroczy ten limit, stare sesje zostaną usunięte z pamięci podręcznej. Aby uzyskać więcej informacji, zobacz Exchange messages in the cloud with Azure Logic Apps and Azure Service Bus (Komunikaty programu Exchange w chmurze za pomocą usługi Azure Logic Apps i Azure Service Bus).
Interwał Tak <liczba interwałów> Liczba jednostek czasu między cyklami przed sprawdzeniem komunikatu. Częstotliwość Tak Drugi, minuta, godzina, dzień, tydzień lub miesiąc Jednostka czasu cyklu do użycia podczas sprawdzania komunikatu. Porada: Aby dodać strefę czasową lub godzinę rozpoczęcia, wybierz te właściwości z listy Dodaj nowy parametr .
Aby uzyskać więcej informacji na temat wyzwalacza, zobacz Service Bus — po odebraniu komunikatu w kolejce (patrz blokada). Wyzwalacz generuje komunikat ServiceBusMessage.
Po zainicjowaniu sesji przepływ pracy używa akcji Inicjowanie zmiennej , aby utworzyć zmienną logiczną, która początkowo została ustawiona na false
i wskazuje, kiedy spełnione są następujące warunki:
Do odczytu nie są dostępne żadne komunikaty w sesji.
Blokada sesji nie musi być już odnawiana, aby można było zakończyć bieżące wystąpienie przepływu pracy.
Następnie w bloku Wypróbuj przepływ pracy wykonuje akcje w pierwszym komunikacie, który jest odczytywany.
Obsługa początkowej wiadomości
Pierwsza akcja to akcja zastępczej usługi Service Bus, Wyślij początkowy komunikat do tematu, który można zastąpić dowolną inną akcją, którą chcesz obsłużyć pierwszy komunikat z sesji w kolejce. Identyfikator sesji określa sesję, z której pochodzi komunikat.
Akcja symbolu zastępczego usługi Service Bus wysyła pierwszy komunikat do tematu usługi Service Bus określonego przez właściwość Identyfikator sesji . W ten sposób wszystkie komunikaty skojarzone z określoną sesją przechodzą do tego samego tematu. Wszystkie właściwości identyfikatora sesji dla kolejnych akcji w tym szablonie używają tej samej wartości identyfikatora sesji.
W akcji Service Bus ukończ początkowy komunikat w kolejce, podaj nazwę kolejki usługi Service Bus i zachowaj wszystkie pozostałe wartości właściwości domyślnych w akcji.
W akcji usługi Service Bus porzucanie początkowego komunikatu z kolejki, podaj nazwę kolejki usługi Service Bus i zachowaj wszystkie pozostałe wartości właściwości domyślnych w akcji.
Następnie podasz informacje niezbędne dla akcji, które są zgodne z akcją Ukończ początkowy komunikat w kolejce . Zaczniesz od akcji w sekcji While there are more messages for the session in the queue loop (Gdy istnieje więcej komunikatów dla sesji w pętli kolejki ).
Chociaż istnieje więcej komunikatów dla sesji w kolejce
Ta pętla Until uruchamia te akcje, gdy komunikaty istnieją w kolejce lub do jednej godziny. Aby zmienić limit czasu pętli, zmodyfikuj wartość właściwości limitu czasu pętli.
Pobierz dodatkowe komunikaty z kolejki, gdy komunikaty istnieją.
Sprawdź liczbę pozostałych komunikatów. Jeśli komunikaty nadal istnieją, kontynuuj przetwarzanie komunikatów. Jeśli nie ma więcej komunikatów, przepływ pracy ustawia zmienną
isDone
natrue
, a następnie zamyka pętlę.
W akcji Service Bus pobierz dodatkowe komunikaty z sesji podaj nazwę kolejki usługi Service Bus. W przeciwnym razie zachowaj wszystkie pozostałe wartości właściwości domyślnych w akcji.
Uwaga
Domyślnie maksymalna liczba komunikatów jest ustawiona na
175
wartość , ale ten limit ma wpływ na rozmiar komunikatu i właściwość maksymalnego rozmiaru komunikatu w usłudze Service Bus. Aby uzyskać więcej informacji, zobacz Rozmiar komunikatu dla kolejki.Następnie przepływ pracy dzieli się na następujące gałęzie równoległe:
Jeśli podczas sprawdzania dodatkowych komunikatów wystąpi błąd lub błąd, ustaw zmienną
isDone
natrue
.Komunikaty Process, jeśli otrzymaliśmy dowolny warunek, sprawdza, czy liczba pozostałych komunikatów jest równa zero. Jeśli istnieje fałsz i więcej komunikatów, kontynuuj przetwarzanie. Jeśli wartość true i nie ma więcej komunikatów, przepływ pracy ustawia zmienną
isDone
natrue
.
W sekcji Jeśli fałsz każda pętla przetwarza każdy komunikat w kolejności pierwszy na początku (FIFO). W ustawieniach pętli ustawienie Kontrolka współbieżności jest ustawione na
1
wartość , więc tylko jeden komunikat jest przetwarzany jednocześnie.W przypadku akcji usługi Service Bus ukończ komunikat w kolejce i Porzuć komunikat w kolejce, podaj nazwę kolejki usługi Service Bus.
Po zakończeniu sesji w kolejce jest więcej komunikatów , przepływ pracy ustawia zmienną
isDone
natrue
.
Następnie podasz informacje niezbędne dla akcji w blokadzie Odnów sesję do momentu anulowania pętli.
Odnawianie blokady sesji do momentu anulowania
Ta pętla Until gwarantuje, że blokada sesji jest utrzymywana przez tę aplikację logiki, gdy komunikaty istnieją w kolejce lub do jednej godziny mija, uruchamiając te akcje. Aby zmienić limit czasu pętli, zmodyfikuj wartość właściwości limitu czasu pętli.
Opóźnienie przez 25 sekund lub czas krótszy niż czas trwania limitu czasu blokady dla przetwarzanej kolejki. Najmniejszy czas trwania blokady wynosi 30 sekund, więc wartość domyślna jest wystarczająca. Można jednak zoptymalizować liczbę uruchomień pętli, odpowiednio dostosowując.
Sprawdź, czy zmienna jest ustawiona
isDone
natrue
wartość .Jeśli
isDone
ustawiono wartośćtrue
, przepływ pracy nadal przetwarza komunikaty, więc przepływ pracy odnawia blokadę sesji w kolejce i ponownie sprawdza warunek pętli.Musisz podać nazwę kolejki usługi Service Bus w akcji Service Bus, Odnów blokadę w sesji w kolejce.
Jeśli
isDone
ustawiono wartośćtrue
, przepływ pracy nie odnawia blokady w sesji w kolejce i zamyka pętlę.
Odnawianie blokady w sesji w kolejce
Ta akcja usługi Service Bus odnawia blokadę sesji w kolejce, gdy przepływ pracy nadal przetwarza komunikaty.
W akcji Service Bus odnów blokadę w sesji w kolejce podaj nazwę kolejki usługi Service Bus.
Następnie podasz niezbędne informacje dotyczące akcji usługi Service Bus, Zamknij sesję w kolejce i zakończysz się pomyślnie.
Zamykanie sesji w kolejce i pomyślne
Ta akcja usługi Service Bus zamyka sesję w kolejce po zakończeniu przetwarzania wszystkich dostępnych komunikatów w kolejce lub przepływ pracy porzuca początkowy komunikat.
W akcji Usługi Service Bus zamknij sesję w kolejce i zakończ się pomyślnie, podaj nazwę kolejki usługi Service Bus.
W poniższych sekcjach opisano akcje w Catch
sekcji , które obsługują błędy i wyjątki występujące w przepływie pracy.
Zamykanie sesji w kolejce i niepowodzenie
Ta akcja usługi Service Bus zawsze jest uruchamiana jako pierwsza akcja w Catch
zakresie i zamyka sesję w kolejce.
W akcji usługi Service Bus zamknij sesję w kolejce i zakończ się niepowodzeniem, podaj nazwę kolejki usługi Service Bus.
Następnie przepływ pracy tworzy tablicę zawierającą dane wejściowe i wyjściowe ze wszystkich akcji w Try
zakresie, dzięki czemu aplikacja logiki może uzyskać dostęp do informacji o błędzie lub niepowodzeniu.
Znajdowanie błędu msg z bloku "Try"
Ta akcja Filtruj tablicę tworzy tablicę zawierającą dane wejściowe i wyjściowe ze wszystkich akcji wewnątrz Try
zakresu na podstawie określonych kryteriów przy użyciu result()
funkcji . W takim przypadku ta akcja zwraca dane wyjściowe z akcji, które mają Failed
stan przy użyciu equals()
funkcji i item()
funkcji.
Oto definicja JSON dla tej akcji:
"Find_failure_msg_from_'Try'_block": {
"inputs": {
"from": "@Result('Try')",
"where": "@equals(item()['status'], 'Failed')"
},
"runAfter": {
"Close_the_session_in_the_queue_and_fail": [
"Succeeded"
]
},
"type": "Query"
},
Następnie przepływ pracy tworzy tablicę z obiektem JSON zawierającym informacje o błędzie w tablicy zwróconej Find failure msg from 'Try' block
z akcji.
Wybieranie szczegółów błędu
Ta akcja Select tworzy tablicę zawierającą obiekty JSON na podstawie tablicy wejściowej, która jest wynikiem poprzedniej akcji Find failure msg from 'Try' block
. W szczególności ta akcja zwraca tablicę, która ma tylko określone właściwości dla każdego obiektu w tablicy. W takim przypadku tablica zawiera nazwę akcji i właściwości wyniku błędu.
Oto definicja JSON dla tej akcji:
"Select_error_details": {
"inputs": {
"from": "@body('Find_failure_msg_from_''Try''_block')[0]['outputs']",
"select": {
"action": "@item()['name']",
"errorResult": "@item()"
}
},
"runAfter": {
"Find_failure_msg_from_'Try'_block": [
"Succeeded"
]
},
"type": "Select"
},
Następnie przepływ pracy zatrzymuje działanie aplikacji logiki i zwraca stan przebiegu wraz z więcej informacji o błędzie lub niepowodzeniu, które wystąpiło.
Kończenie działania aplikacji logiki
Ta akcja Zakończ zatrzymuje działanie aplikacji logiki i zwraca Failed
stan uruchomienia aplikacji logiki wraz z identyfikatorem sesji i wynikiem błędu Select error details
z akcji.
Oto definicja JSON dla tej akcji:
"Terminate": {
"description": "This Failure Termination only runs if the Close Session upon Failure action runs - otherwise the LA will be terminated as Success",
"inputs": {
"runError": {
"code": "",
"message": "There was an error processing messages for Session ID @{triggerBody()?['SessionId']}. The following error(s) occurred: @{body('Select_error_details')['errorResult']}"
},
"runStatus": "Failed"
},
"runAfter": {
"Select_error_details": [
"Succeeded"
]
},
"type": "Terminate"
}
},
Zapisywanie i uruchamianie aplikacji logiki
Po ukończeniu szablonu możesz teraz zapisać aplikację logiki. Na pasku narzędzi projektanta wybierz pozycję Zapisz.
Aby przetestować aplikację logiki, wyślij komunikaty do kolejki usługi Service Bus.
Następne kroki
- Dowiedz się więcej o wyzwalaczach i akcjach łącznika usługi Service Bus
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla