Udostępnij za pośrednictwem


Wysyłanie powiązanych komunikatów w określonej kolejności przy użyciu sekwencyjnego konwoju w usłudze Azure Logic Apps z usługą Azure Service Bus

Dotyczy: Azure Logic Apps (Zużycie)

Jeśli 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 usługi 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 1 zostały obsłużone przez jedno 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 Skorelowane dostarczanie 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 (zobacz blokadę), 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ę w witrynie 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ądzanie dla tej przestrzeni nazw.

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

  3. Teraz uzyskaj 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 parametry połączenia podstawowej wybierz przycisk kopiowania. Zapisz parametry połączenia do późniejszego użycia.

      Kopiowanie przestrzeni nazw usługi Service Bus parametry połączenia

    Napiwek

    Aby sprawdzić, czy parametry połączenia jest skojarzona z przestrzenią nazw usługi Service Bus, czy jednostką obsługi komunikatów, taką jak kolejka, wyszukaj parametry połączenia parametruEntityPath. Jeśli znajdziesz ten parametr, parametry połączenia dotyczy określonej jednostki i nie jest poprawnym ciągiem do użycia z aplikacją logiki.

Tworzenie aplikacji logicznej

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 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 witrynie Azure Portal utwórz pustą aplikację logiki. Na stronie głównej platformy Azure wybierz pozycję Utwórz aplikację logiki integracji>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 (+) 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ć parametry 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

        Napiwek

        Jeśli nie masz tej parametry 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 obszarze 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. Gdy wszystko będzie gotowe, 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 dwoma zakresami, które implementują obsługę błędów zgodnie Try-Catch ze wzorcem.

Teraz możesz dowiedzieć się więcej na temat wyzwalacza i akcji w szablonie lub przejść dalej, aby podać wartości szablonu aplikacji logiki.

Podsumowanie szablonu

Poniżej przedstawiono przepływ pracy najwyższego poziomu w szablonie Skorelowane dostarczanie w kolejności przy użyciu sesji usługi Service Bus po zwinięciu szczegółów:

Przepływ pracy najwyższego poziomu szablonu

Nazwa/nazwisko 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 pod kątem wszystkich komunikatów. Jeśli w kolejce istnieje komunikat, wyzwalacz zostanie wyzwolony, co spowoduje utworzenie i uruchomienie wystąpienia przepływu pracy.

Termin podgląd-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ę w przypadku tego komunikatu 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 "Wypróbuj" zakres.
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/nazwisko opis
Send initial message to topic Możesz zastąpić tę akcję 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: uzupełnianie początkowego komunikatu w kolejce).

- Gałąź nr 2: Porzucanie komunikatu, jeśli coś pójdzie nie tak, i zwolnienie do odbioru przez inny przebieg wyzwalacza. Aby uzyskać więcej informacji, zobacz Branch #2: Abandon initial message from queue (Gałąź nr 2: porzucenie początkowego komunikatu z kolejki).

Obie ścieżki łączą się później w sesji Zamknij w kolejce i powodzeniu akcji opisanej 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 początkowy komunikat, ponieważ wystąpił problem.

Aby uzyskać szczegółowe informacje, zobacz Zamykanie sesji w kolejce i powodzenie.

Gałąź nr 1: Ukończ komunikat początkowy w kolejce

Nazwa/nazwisko 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 Until nadal pobiera komunikaty, gdy komunikaty istnieją lub do jednej godziny. Aby uzyskać więcej informacji na temat akcji w tej pętli, zobacz While there there are more messages for the session in the queue (Chociaż w kolejce znajduje się więcej komunikatów).
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 Until 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 obsługa pierwszego komunikatu zakończy się niepowodzeniem, akcja usługi Service Bus, Porzuć początkowy komunikat z kolejki, zwalnia komunikat dla innego wystąpienia przepływu pracy, aby pobrać i przetworzyć. Aby uzyskać szczegółowe informacje, zobacz Obsługa początkowego komunikatu.

Zakres "Catch"

Jeśli akcje w zakresie zakończą Try się niepowodzeniem, aplikacja logiki musi nadal zamknąć sesję. Akcja Catch zakresu jest uruchamiana, gdy Try akcja 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 działanie aplikacji logiki.

Oto przepływ najwyższego Catch poziomu w akcji zakresu po zwinięciu szczegółów:

Przepływ pracy akcji zakresu

Nazwa/nazwisko opis
Close a session in a queue and fail Ta akcja usługi Service Bus zamyka sesję w kolejce, aby blokada sesji nie pozostawała otwarta. Aby uzyskać szczegółowe informacje, zobacz Zamykanie sesji w kolejce i niepowodzenie.
Find failure msg from 'Try' block Ta akcja Filtruj tablicę tworzy tablicę na podstawie danych wejściowych i wyjściowych ze wszystkich akcji w Try zakresie 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 "Try".
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 wszystkie akcje w toku, pomija wszelkie pozostałe akcje i zwraca określony stan, identyfikator sesji i wynik błędu Select error details z 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 (zajrzyj do 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 dotyczące komunikatu

    Uwaga

    Początkowo interwał sondowania jest ustawiony na trzy minuty, aby aplikacja logiki nie uruchamiała się częściej niż oczekiwano i powoduje nieoczekiwane 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ści Wymagane w tym scenariuszu Wartość Opis
    Nazwa kolejki Tak <nazwa kolejki> Nazwa wcześniej utworzonej kolejki usługi Service Bus. W tym przykładzie użyto elementu "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 ani 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 nie powoduje żadnych sesji i nie może być używana do implementowania wzorca konwoju sekwencyjnego.

    - Wprowadź wartość niestandardową: użyj tej opcji, jeśli 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 jednocześnie z usługi 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 (Wymiana komunikatów w chmurze za pomocą usług Azure Logic Apps i Azure Service Bus).

    Interwał Tak <liczba interwałów> Liczba jednostek czasu między cyklami przed sprawdzeniem komunikatu.
    Częstotliwość Tak Sekunda, 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 o wyzwalaczu, zobacz Service Bus — gdy komunikat jest odbierany w kolejce (zobacz blokadę).. 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:

  • Nie można odczytać więcej komunikatów 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 dla pierwszego odczytywania komunikatu.

Obsługa początkowego komunikatu

Pierwszą akcją jest akcja zastępcza usługi Service Bus Wyślij komunikat początkowy do tematu, którą 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.

Symbol zastępczy akcji 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 Identyfikator sesji dla kolejnych akcji w tym szablonie używają tej samej wartości identyfikatora sesji.

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

  1. W akcji usługi Service Bus ukończ początkowy komunikat w kolejce, podaj nazwę kolejki usługi Service Bus i zachowaj wszystkie pozostałe domyślne wartości właściwości 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 domyślne wartości właściwości w akcji.

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

Następnie podasz niezbędne informacje dotyczące akcji, które są zgodne z akcją Ukończ początkowy komunikat w kolejce . Zaczniesz od akcji w pętli Kolejka zawiera więcej komunikatów dla sesji .

Chociaż w kolejce jest więcej komunikatów dla sesji

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 Limit 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, i zamyka pętlę.

Pętla Until — przetwarzanie komunikatów w kolejce

  1. W akcji usługi Service Bus podaj nazwę kolejki usługi Service Bus, aby pobrać dodatkowe komunikaty z sesji. W przeciwnym razie zachowaj wszystkie pozostałe domyślne wartości właściwości 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.

    • Komunikat Przetwarzanie, jeśli otrzymaliśmy jakikolwiek warunek, sprawdza, czy liczba pozostałych komunikatów wynosi zero. Jeśli istnieje wartość false 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 truewartość .

    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 wyjęcie (FIFO). W ustawieniach pętli ustawienie Kontrolka współbieżności jest ustawione na 1, więc tylko jeden komunikat jest przetwarzany w danym momencie.

    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 niezbędne informacje dotyczące akcji w blokadzie Odnawianie sesji do momentu anulowania pętli.

Odnawianie blokady sesji do momentu anulowania

Ta pętla Until zapewnia, że blokada sesji jest przechowywana przez tę aplikację logiki, gdy komunikaty istnieją w kolejce lub do jednej godziny przechodzi przez uruchomienie tych akcji. Aby zmienić limit czasu pętli, zmodyfikuj wartość właściwości Limit 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ę przebiegów 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ę w sesji w kolejce i ponownie sprawdza warunek pętli.

      Musisz podać nazwę kolejki usługi Service Bus w akcji usługi 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 usługi Service Bus odnów blokadę sesji w kolejce podaj nazwę kolejki usługi Service Bus.

    Akcja usługi Service Bus —

Następnie podasz niezbędne informacje dla akcji usługi Service Bus, Zamknij sesję w kolejce i zakończysz się pomyślnie.

Zamykanie sesji w kolejce i powodzenie

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 powiedz się, podaj nazwę kolejki usługi Service Bus.

    Akcja usługi Service Bus —

W poniższych sekcjach opisano akcje opisane 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, które wystąpiły.

Znajdowanie błędu msg z bloku "Try"

Ta akcja Filtruj tablicę tworzy tablicę zawierającą dane wejściowe i wyjściowe ze wszystkich akcji w Try zakresie 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życiuequals() 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 wyjściowej z 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 tym 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 uruchamianie aplikacji logiki i zwraca stan przebiegu wraz z więcej informacji o błędzie lub niepowodzeniu, które wystąpiły.

Kończenie uruchamiania aplikacji logiki

Ta akcja Zakończ zatrzymuje uruchamianie 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