Udostępnij za pośrednictwem


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.

Ogólny wzorzec konwoju sekwencyjnego

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

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.

  1. Zaloguj się do Azure portal. Znajdź i wybierz przestrzeń nazw usługi Service Bus.

  2. 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.

    Zarządzanie uprawnieniami dla przestrzeni nazw usługi Service Bus

  3. 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.

    1. W okienku Zasady dostępu współdzielonego w obszarze Zasady wybierz pozycję RootManageSharedAccessKey.

    2. Obok podstawowych parametrów połączenia wybierz przycisk kopiowania. Zapisz parametry połączenia do późniejszego użycia.

      Kopiowanie parametrów połączenia przestrzeni nazw usługi Service Bus

    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ć.

  1. W Azure Portal utwórz pustą aplikację logiki. Na stronie głównej platformy Azure wybierz pozycję Utwórz aplikacjęlogikiintegracji> zasobów>.

  2. 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.

    Wybierz szablon

  3. Po wyświetleniu pola potwierdzenia wybierz pozycję Użyj tego szablonu.

  4. 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.

    Wybierz pozycję

  5. 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:

      1. Wybierz pozycję Ręcznie wprowadź informacje o połączeniu.

      2. 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:

        Wprowadź nazwę połączenia i parametry połączenia usługi Service Bus

        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:

      1. 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:

        Wprowadź nazwę połączenia i wybierz pozycję Przestrzeń nazw usługi Service Bus

      2. Po wyświetleniu następnego okienka wybierz zasady usługi Service Bus i wybierz pozycję Utwórz.

        Wybierz pozycję Zasady usługi Service Bus, a następnie pozycję

  6. 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:

Przepływ pracy najwyższego poziomu szablonu

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.
— Blokada sesji nie musi być już odnawiana, aby można było zakończyć bieżące wystąpienie przepływu pracy.

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:

Przepływ pracy akcji zakresu

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.
— Przepływ pracy porzuca komunikat początkowy, ponieważ wystąpił problem.

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 Tryakcja zakresu powoduje wyświetlenie stanu, Failed, Skippedlub 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:

Przepływ pracy akcji zakresu

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:

    Szczegóły wyzwalacza usługi Service Bus dla komunikatu

    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.

Szczegóły akcji

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.

Szczegóły akcji usługi Service Bus dla tematu

  1. 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.

    Szczegóły akcji usługi Service Bus dla komunikatu

  2. 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.

    Szczegóły akcji usługi Service Bus dla komunikatu

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 na true, a następnie zamyka pętlę.

Pętla Until — przetwarzanie komunikatów w kolejce

  1. 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 175wartość , 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.

    Akcja usługi Service Bus —

    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 na true.

    • 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 na true.

    Warunek — przetwarzanie komunikatów, jeśli istnieją

    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 1wartość , więc tylko jeden komunikat jest przetwarzany jednocześnie.

    Pętla

  2. W przypadku akcji usługi Service Bus ukończ komunikat w kolejce i Porzuć komunikat w kolejce, podaj nazwę kolejki usługi Service Bus.

    Akcje usługi Service Bus —

    Po zakończeniu sesji w kolejce jest więcej komunikatów , przepływ pracy ustawia zmienną isDone na true.

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 na truewartość .

    • 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ę.

    Pętla Until —

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.

    Akcja 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.

    Akcja 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.

    Akcja 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.

Akcja filtrowania tablicy —

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.

Wybierz akcję —

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.

Zakończ akcję, aby zatrzymać uruchamianie aplikacji logiki

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