Share via


Gerelateerde berichten op volgorde verzenden met behulp van een sequentiële konvooi in Azure Logic Apps met Azure Service Bus

Van toepassing op: Azure Logic Apps (verbruik)

Wanneer u gecorreleerde berichten in een specifieke volgorde wilt verzenden, kunt u het sequentiële convoypatroon volgen wanneer u Azure Logic Apps gebruikt met behulp van de Azure Service Bus-connector. Gecorreleerde berichten hebben een eigenschap die de relatie tussen deze berichten definieert, zoals de id voor de sessie in Service Bus.

Stel dat u 10 berichten hebt voor een sessie met de naam Sessie 1 en dat u vijf berichten hebt voor een sessie met de naam Sessie 2 die allemaal naar dezelfde Service Bus-wachtrij worden verzonden. U kunt een logische app maken waarmee berichten uit de wachtrij worden verwerkt, zodat alle berichten van 'Sessie 1' worden verwerkt door één triggeruitvoering en alle berichten van Sessie 2 worden verwerkt door de volgende triggeruitvoering.

Algemeen sequentiële convoypatroon

In dit artikel wordt beschreven hoe u een logische app maakt waarmee dit patroon wordt geïmplementeerd met behulp van de sjabloon Gecorreleerde in-orderlevering met behulp van de Service Bus-sessiessjabloon . Deze sjabloon definieert een werkstroom voor logische apps die begint met de service bus-connector wanneer een bericht wordt ontvangen in een wachtrijtrigger (peek-lock), die berichten van een Service Bus-wachtrij ontvangt. Hier volgen de stappen op hoog niveau die door deze logische app worden uitgevoerd:

  • Initialiseer een sessie op basis van een bericht dat de trigger leest uit de Service Bus-wachtrij.

  • Alle berichten uit dezelfde sessie in de wachtrij lezen en verwerken tijdens de uitvoering van de huidige werkstroom.

Zie GitHub: service-bus-sessions.json om het JSON-bestand van deze sjabloon te bekijken.

Zie Het sequentiële convoypatroon Azure Architecture Cloud Design Patterns voor meer informatie.

Vereisten

Toegang tot Service Bus-naamruimte controleren

Als u niet zeker weet of uw logische app machtigingen heeft voor toegang tot uw Service Bus-naamruimte, controleert u deze machtigingen.

  1. Meld u aan bij het Azure-portaal. Zoek en selecteer uw Service Bus-naamruimte.

  2. Selecteer in het naamruimtemenu onder Instellingen het beleid voor gedeelde toegang. Controleer onder Claims of u machtigingen voor deze naamruimte hebt.

    Machtigingen voor Service Bus-naamruimte beheren

  3. Haal nu de verbindingsreeks op voor uw Service Bus-naamruimte. U kunt deze tekenreeks later gebruiken wanneer u een verbinding maakt met de naamruimte vanuit uw logische app.

    1. Selecteer In het deelvenster Beleid voor gedeelde toegang onder Beleid de optie RootManageSharedAccessKey.

    2. Selecteer naast uw primaire verbindingsreeks de knop Kopiëren. Sla de verbindingsreeks op voor later gebruik.

      Service Bus-naamruimte kopiëren verbindingsreeks

    Tip

    Als u wilt controleren of uw verbindingsreeks is gekoppeld aan uw Service Bus-naamruimte of een berichtenentiteit, zoals een wachtrij, zoekt u in de verbindingsreeks naar de EntityPath parameter. Als u deze parameter vindt, is de verbindingsreeks voor een specifieke entiteit en is deze niet de juiste tekenreeks die u met uw logische app kunt gebruiken.

Logische app maken

In deze sectie maakt u een logische app met behulp van de gecorreleerde levering in bestelling met behulp van de service bus-sessiesjabloon , waaronder de trigger en acties voor het implementeren van dit werkstroompatroon. U maakt ook een verbinding met uw Service Bus-naamruimte en geeft de naam op voor de Service Bus-wachtrij die u wilt gebruiken.

  1. Maak in Azure Portal een lege logische app. Selecteer op de startpagina van Azure een logische app voor resourceintegratie>> maken.

  2. Nadat de sjabloongalerie wordt weergegeven, bladert u langs de video en de algemene triggersecties. Selecteer in de sectie Sjablonen de sjabloon, Gecorreleerde levering in bestelling met behulp van Service Bus-sessies.

    Selecteer de sjabloon 'Gecorreleerde levering in bestelling met behulp van Service Bus-sessies'

  3. Wanneer het bevestigingsvak wordt weergegeven, selecteert u Deze sjabloon gebruiken.

  4. Selecteer doorgaan in de ontwerpfunctie voor logische apps in de Service Bus-shape en selecteer vervolgens het plusteken (+) dat in de shape wordt weergegeven.

    Selecteer Doorgaan om verbinding te maken met Azure Service Bus

  5. Maak nu een Service Bus-verbinding door een van de volgende opties te kiezen:

    • Als u de verbindingsreeks wilt gebruiken die u eerder hebt gekopieerd uit uw Service Bus-naamruimte, voert u de volgende stappen uit:

      1. Selecteer Handmatig verbindingsgegevens invoeren.

      2. Geef bij Verbindingsnaam een naam op voor de verbinding. Voor verbindingsreeks plakt u uw naamruimte verbindingsreeks en selecteert u Maken, bijvoorbeeld:

        Voer de verbindingsnaam en Service Bus-verbindingsreeks in

        Tip

        Als u deze verbindingsreeks niet hebt, leert u hoe u de Service Bus-naamruimte verbindingsreeks kunt zoeken en kopiëren.

    • Voer de volgende stappen uit om een Service Bus-naamruimte te selecteren in uw huidige Azure-abonnement:

      1. Geef bij Verbindingsnaam een naam op voor de verbinding. Voor Service Bus-naamruimte selecteert u uw Service Bus-naamruimte, bijvoorbeeld:

        Voer de verbindingsnaam in en selecteer Service Bus-naamruimte

      2. Wanneer het volgende deelvenster wordt weergegeven, selecteert u uw Service Bus-beleid en selecteert u Maken.

        Selecteer Service Bus-beleid en vervolgens 'Maken'

  6. Wanneer u klaar bent, selecteert u Doorgaan.

    De ontwerper van logische apps toont nu de gecorreleerde levering in bestelling met behulp van de service bus-sessiesjabloon , die een vooraf ingevulde werkstroom bevat met een trigger en acties, waaronder twee bereiken waarmee foutafhandeling wordt geïmplementeerd die het Try-Catch patroon volgen.

U kunt nu meer informatie krijgen over de trigger en acties in de sjabloon of vooruitgaan om de waarden voor de sjabloon voor de logische app op te geven.

Sjabloonsamenvatting

Dit is de werkstroom op het hoogste niveau in de gecorreleerde levering in bestelling met behulp van de service bus-sessiesjabloon wanneer de details zijn samengevouwen:

Werkstroom op het hoogste niveau van sjabloon

Name Beschrijving
When a message is received in a queue (peek-lock) Op basis van het opgegeven terugkeerpatroon controleert deze Service Bus-trigger de opgegeven Service Bus-wachtrij voor berichten. Als er een bericht in de wachtrij staat, wordt de trigger geactiveerd, die een werkstroomexemplaren maakt en uitvoert.

De term peek-lock betekent dat de trigger een aanvraag verzendt om een bericht op te halen uit de wachtrij. Als er een bericht bestaat, wordt het bericht door de trigger opgehaald en vergrendeld, zodat er geen andere verwerking op dat bericht plaatsvindt totdat de vergrendelingsperiode verloopt. Initialiseer de sessie voor meer informatie.

Init isDone Met deze actie variabele initialiseren wordt een Booleaanse variabele gemaakt die is ingesteld false op en geeft aan wanneer aan de volgende voorwaarden wordt voldaan:

- Er zijn geen berichten meer beschikbaar om te lezen.
- De sessievergrendeling hoeft niet meer te worden vernieuwd, zodat het huidige werkstroomexemplaren kunnen worden voltooid.

Zie Initialiseer de sessie voor meer informatie.

Try Deze bereikactie bevat de acties die worden uitgevoerd om een bericht te verwerken. Als er een probleem optreedt in het Try bereik, wordt dat probleem door de volgende Catch actie Bereik afgehandeld. Zie 'Try'-bereik voor meer informatie.
Catch Deze bereikactie bevat de acties die worden uitgevoerd als er een probleem optreedt in het voorgaande Try bereik. Zie 'Catch'-bereik voor meer informatie.

Bereik 'Proberen'

Dit is de stroom op het hoogste niveau in de Try bereikactie wanneer de details zijn samengevouwen:

Werkstroom voor bereikactie 'Proberen'

Name Beschrijving
Send initial message to topic U kunt deze actie vervangen door elke actie die u wilt afhandelen van het eerste bericht uit de sessie in de wachtrij. De sessie-id geeft de sessie aan.

Voor deze sjabloon verzendt een Service Bus-actie het eerste bericht naar een Service Bus-onderwerp. Zie Het eerste bericht afhandelen voor meer informatie.

(parallelle vertakking) Met deze parallelle vertakkingsactie worden twee paden gemaakt:

- Vertakking 1: Doorgaan met het verwerken van het bericht. Zie Branch 1 voor meer informatie: Eerste bericht in wachtrij voltooien.

- Branch 2: Laat het bericht af als er iets misgaat en laat los voor ophalen door een andere triggeruitvoering. Zie Vertakking 2 voor meer informatie: Eerste bericht verlaten uit de wachtrij.

Beide paden worden later opgenomen in de sessie Sluiten in een wachtrij en slagen in de actie, zoals beschreven in de volgende rij.

Close a session in a queue and succeed Met deze Service Bus-actie worden de eerder beschreven vertakkingen samengevoegd en wordt de sessie in de wachtrij gesloten nadat een van de volgende gebeurtenissen is uitgevoerd:

- De werkstroom voltooit de verwerking van beschikbare berichten in de wachtrij.
- De werkstroom verlaat het eerste bericht omdat er iets is misgegaan.

Zie Een sessie in een wachtrij sluiten en voltooien voor meer informatie.

Vertakking 1: Eerste bericht in wachtrij voltooien

Name Beschrijving
Complete initial message in queue Deze Service Bus-actie markeert een bericht dat is opgehaald als voltooid en verwijdert het bericht uit de wachtrij om te voorkomen dat het opnieuw wordt verwerkt. Zie Het eerste bericht afhandelen voor meer informatie.
While there are more messages for the session in the queue Deze Until-lus blijft berichten ontvangen terwijl berichten bestaan of tot één uur is verstreken. Zie Voor meer informatie over de acties in deze lus, terwijl er meer berichten zijn voor de sessie in de wachtrij.
Set isDone = true Als er geen berichten meer bestaan, wordt deze actie Variabele instellen ingesteld isDone op true.
Renew session lock until cancelled Deze until-lus zorgt ervoor dat de sessievergrendeling wordt vastgehouden door deze logische app terwijl berichten bestaan of tot één uur is verstreken. Zie Sessievergrendeling verlengen totdat deze is geannuleerd voor meer informatie over de acties in deze lus.

Vertakking 2: Eerste bericht uit de wachtrij verlaten

Als de actie die het eerste bericht afhandelt mislukt, wordt het bericht vrijgegeven voor een ander werkstroomexemplaren om het bericht op te halen en te verwerken. Zie Het eerste bericht afhandelen voor meer informatie.

Bereik 'Catch'

Als acties in het Try bereik mislukken, moet de logische app de sessie nog steeds sluiten. De Catch bereikactie wordt uitgevoerd wanneer de Try bereikactie resulteert in de status, Failed, of TimedOutSkipped. Het bereik retourneert een foutbericht met de sessie-id waar het probleem is opgetreden en beëindigt de logische app.

Dit is de stroom op het hoogste niveau in de Catch bereikactie wanneer de details zijn samengevouwen:

Werkstroom voor bereikactie 'Catch'

Name Beschrijving
Close a session in a queue and fail Met deze Service Bus-actie wordt de sessie in de wachtrij gesloten, zodat de sessievergrendeling niet open blijft. Zie Een sessie in een wachtrij sluiten en mislukken voor meer informatie.
Find failure msg from 'Try' block Met deze filtermatrixactie maakt u een matrix op basis van de invoer en uitvoer van alle acties binnen het Try bereik op basis van de opgegeven criteria. In dit geval retourneert deze actie de uitvoer van de acties die resulteren in Failed de status. Zie Fout zoeken in blok Try voor meer informatie.
Select error details Met deze actie Selecteren wordt een matrix gemaakt die JSON-objecten bevat op basis van de opgegeven criteria. Deze JSON-objecten worden gebouwd op basis van de waarden in de matrix die door de vorige actie zijn gemaakt. Find failure msg from 'Try' block In dit geval retourneert deze actie een matrix die een JSON-object bevat dat is gemaakt op basis van de foutdetails die zijn geretourneerd door de vorige actie. Zie Foutdetails selecteren voor meer informatie.
Terminate Deze beëindigingsactie stopt de uitvoering voor de werkstroom, annuleert alle acties die worden uitgevoerd, slaat alle resterende acties over en retourneert de opgegeven status, de sessie-id en het foutresultaat van de Select error details actie. Zie Logische app beëindigen voor meer informatie.

De sjabloon voltooien

Volg deze stappen om de waarden op te geven voor de trigger en acties in de gecorreleerde levering in volgorde met behulp van de service bus-sessiesjabloon . U moet alle vereiste waarden opgeven, die zijn gemarkeerd met een sterretje (*), voordat u uw logische app kunt opslaan.

De sessie initialiseren

  • Geef voor de trigger Wanneer een bericht wordt ontvangen in een wachtrij (peek-lock) deze informatie op, zodat de sjabloon een sessie kan initialiseren met behulp van de eigenschap Sessie-id , bijvoorbeeld:

    Service Bus-triggerdetails voor 'Wanneer een bericht wordt ontvangen in een wachtrij (peek-lock)'

    Notitie

    In eerste instantie is het polling-interval ingesteld op drie minuten, zodat de logische app niet vaker wordt uitgevoerd dan verwacht en leiden tot onverwachte factureringskosten. Stel in het ideale gevallen het interval en de frequentie in op 30 seconden, zodat de logische app onmiddellijk wordt geactiveerd wanneer een bericht binnenkomt.

    Eigenschappen Vereist voor dit scenario Weergegeven als Beschrijving
    Wachtrijnaam Ja <wachtrijnaam> De naam voor uw eerder gemaakte Service Bus-wachtrij. In dit voorbeeld wordt 'Fabrikam-Service-Bus-Queue' gebruikt.
    Wachtrijtype Ja Hoofd Uw primaire Service Bus-wachtrij
    Sessie-id Ja Volgende beschikbaar Met deze optie wordt een sessie opgehaald voor elke triggeruitvoering, op basis van de sessie-id van het bericht in de Service Bus-wachtrij. De sessie is ook vergrendeld, zodat er geen andere logische app of andere client berichten kan verwerken die betrekking hebben op deze sessie. De volgende acties van de werkstroom verwerken alle berichten die aan die sessie zijn gekoppeld, zoals verderop in dit artikel wordt beschreven.

    Hier vindt u meer informatie over de andere opties voor sessie-id's :

    - Geen: De standaardoptie, die resulteert in geen sessies en kan niet worden gebruikt voor het implementeren van het sequentiële konvoypatroon.

    - Voer een aangepaste waarde in: gebruik deze optie als u de sessie-id kent die u wilt gebruiken en u altijd de trigger voor die sessie-id wilt uitvoeren.

    Opmerking: De Service Bus-connector kan een beperkt aantal unieke sessies tegelijk opslaan van Azure Service Bus naar de connectorcache. Als het aantal sessies deze limiet overschrijdt, worden oude sessies uit de cache verwijderd. Zie Exchange-berichten in de cloud met Azure Logic Apps en Azure Service Bus voor meer informatie.

    Interval Ja <aantal intervallen> Het aantal tijdseenheden tussen terugkeerpatronen voordat u een bericht controleert.
    Frequentie Ja Second, Minute, Hour, Day, Week of Month De tijdseenheid voor het terugkeerpatroon dat moet worden gebruikt bij het controleren op een bericht.

    Tip: Als u een tijdzone of begintijd wilt toevoegen, selecteert u deze eigenschappen in de lijst Nieuwe parameter toevoegen.

    Zie Service Bus : wanneer een bericht wordt ontvangen in een wachtrij (peek-lock) voor meer informatie over triggers. De trigger voert een ServiceBusMessage uit.

Nadat de sessie is geïnitialiseerd, gebruikt de werkstroom de actie Variabele initialiseren om een Booleaanse variabele te maken die in eerste instantie is ingesteld false op en geeft aan wanneer aan de volgende voorwaarden wordt voldaan:

  • Er zijn geen berichten meer beschikbaar om te lezen.

  • De sessievergrendeling hoeft niet meer te worden vernieuwd, zodat het huidige werkstroomexemplaren kunnen worden voltooid.

Vervolgens voert de werkstroom in het blok Try acties uit op het eerste bericht dat wordt gelezen.

Het eerste bericht afhandelen

De eerste actie is een tijdelijke aanduiding voor de Service Bus-actie, eerste bericht verzenden naar onderwerp, die u kunt vervangen door een andere actie die u het eerste bericht van de sessie in de wachtrij wilt afhandelen. De sessie-id geeft de sessie aan van waaruit het bericht afkomstig is.

De tijdelijke aanduiding voor de Service Bus-actie verzendt het eerste bericht naar een Service Bus-onderwerp dat is opgegeven door de eigenschap Sessie-id . Op die manier gaan alle berichten die zijn gekoppeld aan een specifieke sessie naar hetzelfde onderwerp. Alle eigenschappen van de sessie-id voor volgende acties in deze sjabloon gebruiken dezelfde sessie-id-waarde.

Service Bus-actiedetails voor 'Eerste bericht verzenden naar onderwerp'

  1. Geef in de Service Bus-actie het eerste bericht in de wachtrij op, geef de naam op voor uw Service Bus-wachtrij en behoud alle andere standaardeigenschapswaarden in de actie.

    Service Bus-actiedetails voor 'Eerste bericht in wachtrij voltooien'

  2. Geef in de Service Bus-actie het eerste bericht uit de wachtrij af, geef de naam op voor uw Service Bus-wachtrij en behoud alle andere standaardeigenschapswaarden in de actie.

    Service Bus-actiedetails voor 'Eerste bericht uit de wachtrij verlaten'

Vervolgens geeft u de benodigde informatie op voor de acties die het eerste bericht voltooien in de wachtrijactie volgen. U begint met de acties in de sessie terwijl er meer berichten voor de sessie in de wachtrijlus staan.

Er zijn meer berichten voor de sessie in de wachtrij

Met deze until-lus worden deze acties uitgevoerd terwijl berichten in de wachtrij staan of tot één uur is verstreken. Als u de tijdslimiet van de lus wilt wijzigen, bewerkt u de waarde van de time-outeigenschap van de lus.

  • Extra berichten uit de wachtrij ophalen terwijl berichten bestaan.

  • Controleer het aantal resterende berichten. Als er nog steeds berichten bestaan, kunt u doorgaan met het verwerken van berichten. Als er geen berichten meer bestaan, stelt de werkstroom de isDone variabele truein op en sluit de lus af.

Until-lus - Berichten verwerken in wachtrij

  1. Geef in de Service Bus-actie aanvullende berichten van de sessie op, geef de naam op voor uw Service Bus-wachtrij. Bewaar anders alle andere standaardeigenschapswaarden in de actie.

    Notitie

    Standaard is het maximum aantal berichten ingesteld op 175, maar deze limiet wordt beïnvloed door de eigenschap berichtgrootte en maximale berichtgrootte in Service Bus. Zie Berichtgrootte voor een wachtrij voor meer informatie.

    Service Bus-actie : 'Extra berichten ophalen uit sessie'

    Vervolgens wordt de werkstroom gesplitst in deze parallelle vertakkingen:

    • Als er een fout of fout optreedt tijdens het controleren op aanvullende berichten, stelt u de isDone variabele in op true.

    • De berichten Verwerken als er een voorwaarde is, wordt gecontroleerd of het aantal resterende berichten nul is. Als er onwaar en meer berichten bestaan, kunt u doorgaan met verwerken. Als waar en er geen berichten meer bestaan, wordt de isDone variabele trueingesteld op .

    Voorwaarde: berichten verwerken indien van toepassing

    In de sectie If false verwerkt een For each loop elk bericht in first-in, first-out order (FIFO). In de instellingen van de lus is de instelling Gelijktijdigheidsbeheer ingesteld op1, dus er wordt slechts één bericht tegelijk verwerkt.

    Lus 'Voor elke' - Elk bericht één voor één verwerken

  2. Geef voor de Service Bus-acties het bericht in een wachtrij op en geef het bericht in een wachtrij de naam op voor uw Service Bus-wachtrij.

    Service Bus-acties: 'Het bericht in een wachtrij voltooien' en 'Het bericht in een wachtrij verlaten'

    Nadat er meer berichten zijn voor de sessie in de wachtrij, wordt de variabele trueingesteld isDone op .

Vervolgens geeft u de benodigde informatie op voor de acties in de sessievergrendeling vernieuwen totdat de lus is geannuleerd.

Sessievergrendeling verlengen totdat deze is geannuleerd

Deze Until-lus zorgt ervoor dat de sessievergrendeling wordt vastgehouden door deze logische app terwijl berichten in de wachtrij staan of tot één uur wordt doorgegeven door deze acties uit te voeren. Als u de tijdslimiet van de lus wilt wijzigen, bewerkt u de waarde van de time-outeigenschap van de lus.

  • Vertraging van 25 seconden of een tijdsduur die kleiner is dan de time-outduur voor de vergrendeling voor de wachtrij die wordt verwerkt. De kleinste vergrendelingsduur is 30 seconden, dus de standaardwaarde is voldoende. U kunt echter het aantal keren optimaliseren dat de lus wordt uitgevoerd door deze op de juiste manier aan te passen.

  • Controleer of de isDone variabele is ingesteld op true.

    • Als isDone deze optie is ingesteld true, verwerkt de werkstroom nog steeds berichten, zodat de werkstroom de vergrendeling van de sessie in de wachtrij verlengt en de lusvoorwaarde opnieuw controleert.

      U moet de naam voor uw Service Bus-wachtrij opgeven in de Service Bus-actie, de vergrendeling vernieuwen voor de sessie in een wachtrij.

    • Als isDone dit is ingesteld true, wordt de vergrendeling van de sessie in de wachtrij niet vernieuwd door de werkstroom en wordt de lus afgesloten.

    Until-lus - 'Sessievergrendeling verlengen totdat deze is geannuleerd'

Vergrendelen van de sessie in een wachtrij verlengen

Met deze Service Bus-actie wordt de vergrendeling van de sessie in de wachtrij vernieuwd terwijl de werkstroom nog steeds berichten verwerkt.

  • Geef in de Service Bus-actie de vergrendeling van de sessie in een wachtrij op, geef de naam op voor uw Service Bus-wachtrij.

    Service Bus-actie: 'Vergrendeling van sessie in de wachtrij vernieuwen'

Vervolgens geeft u de benodigde informatie op voor de Service Bus-actie, sluit u een sessie in een wachtrij en slaagt u.

Een sessie in een wachtrij sluiten en slaagt

Met deze Service Bus-actie wordt de sessie in de wachtrij gesloten nadat de werkstroom alle beschikbare berichten in de wachtrij heeft verwerkt, of de werkstroom het eerste bericht verlaat.

  • In de Service Bus-actie sluit u een sessie in een wachtrij en voert u de naam in voor uw Service Bus-wachtrij.

    Service Bus-actie: 'Een sessie in een wachtrij sluiten en voltooien'

In de volgende secties worden de acties in de Catch sectie beschreven, waarmee fouten en uitzonderingen in uw werkstroom worden afgehandeld.

Een sessie in een wachtrij sluiten en mislukken

Deze Service Bus-actie wordt altijd uitgevoerd als de eerste actie in het Catch bereik en sluit de sessie in de wachtrij.

  • In de Service Bus-actie sluit u een sessie in een wachtrij en mislukt u de naam voor uw Service Bus-wachtrij.

    Service Bus-actie: 'Een sessie in een wachtrij sluiten en mislukken'

Vervolgens maakt de werkstroom een matrix met de invoer en uitvoer van alle acties in het Try bereik, zodat de logische app toegang heeft tot informatie over de fout of fout die is opgetreden.

Fout msg zoeken vanuit het blok Try

Met deze filtermatrixactie maakt u een matrix met de invoer en uitvoer van alle acties binnen het Try bereik op basis van de opgegeven criteria met behulp van de result() functie. In dit geval retourneert deze actie de uitvoer van de acties die de status hebben Failed met behulp van deequals() functie en item() functie.

Matrixactie filteren - 'Fout zoeken msg uit 'Try' block

Dit is de JSON-definitie voor deze actie:

"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"
},

Vervolgens maakt de werkstroom een matrix met een JSON-object dat de foutinformatie bevat in de matrix die wordt geretourneerd door de Find failure msg from 'Try' block actie.

Foutdetails selecteren

Met deze actie Selecteren wordt een matrix gemaakt die JSON-objecten bevat op basis van de invoermatrix die wordt uitgevoerd uit de vorige actie. Find failure msg from 'Try' block Deze actie retourneert een matrix met alleen de opgegeven eigenschappen voor elk object in de matrix. In dit geval bevat de matrix de naam van de actie en de eigenschappen van het foutresultaat.

Actie selecteren - Foutdetails selecteren

Dit is de JSON-definitie voor deze actie:

"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"
},

Vervolgens stopt de werkstroom de uitvoering van de logische app en wordt de uitvoeringsstatus geretourneerd, samen met meer informatie over de fout of fout die is opgetreden.

Uitvoering van logische app beëindigen

Deze beëindigingsactie stopt de uitvoering van de logische app en retourneert Failed de status voor de uitvoering van de logische app, samen met de sessie-id en het foutresultaat van de Select error details actie.

Actie beëindigen om de uitvoering van een logische app te stoppen

Dit is de JSON-definitie voor deze actie:

"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"
   }
},

Logische app opslaan en uitvoeren

Nadat u de sjabloon hebt voltooid, kunt u uw logische app nu opslaan. Selecteer in de werkbalk van de ontwerper Opslaan.

Als u uw logische app wilt testen, verzendt u berichten naar uw Service Bus-wachtrij.

Volgende stappen