Nastavení dlouhotrvajících úloh voláním pracovních postupů aplikací logiky pomocí Azure Functions

Platí pro: Azure Logic Apps (Consumption)

Pokud potřebujete nasadit dlouhotrvající naslouchací proces nebo úlohu, můžete vytvořit pracovní postup aplikace logiky, který používá trigger požadavku a Azure Functions k volání triggeru a spuštění pracovního postupu.

Můžete například vytvořit funkci, která naslouchá zprávám, které dorazí do fronty Azure Service Bus. Když dojde k této události, funkce zavolá trigger Požadavku, který funguje jako trigger nabízených oznámení k automatickému spuštění pracovního postupu.

Tento návod ukazuje, jak vytvořit pracovní postup aplikace logiky, který začíná triggerem požadavku. Pak vytvoříte funkci, která naslouchá frontě služby Service Bus. Když do fronty dorazí zpráva, funkce zavolá koncový bod vytvořený triggerem Požadavku, aby spustila váš pracovní postup.

Poznámka

I když můžete toto chování implementovat pomocí pracovního postupu aplikace logiky Consumption nebo Standard, tento příklad pokračuje pracovním postupem Consumption.

Požadavky

Vytvoření pracovního postupu aplikace logiky

  1. V Azure Portal vytvořte prázdnou aplikaci logiky Consumption výběrem šablony Prázdná aplikace logiky.

  2. Po otevření návrháře vyberte ve vyhledávacím poli návrháře možnost Předdefinované. Do vyhledávacího pole zadejte požadavek.

  3. V seznamu triggerů vyberte aktivační událost s názvem Při přijetí požadavku HTTP.

    Snímek obrazovky s návrhářem na portálu Vyhledávací pole obsahuje

    Pomocí triggeru Požadavek můžete volitelně zadat schéma JSON, které se má použít se zprávou fronty. Schémata JSON pomáhají návrháři pochopit strukturu vstupních dat a usnadňují použití výstupů v pracovním postupu.

  4. Pokud chcete zadat schéma, zadejte schéma do pole Schéma JSON v textu požadavku .

    Snímek obrazovky s podrobnostmi o triggeru požadavku HTTP V poli Schéma JSON textu požadavku je viditelný nějaký kód JSON.

    Pokud nemáte schéma, ale máte ukázkovou datovou část ve formátu JSON, můžete schéma z této datové části vygenerovat.

    1. V triggeru požadavku vyberte Použít ukázkovou datovou část ke generování schématu.

    2. V části Zadejte nebo vložte ukázkovou datovou část JSON zadejte ukázkovou datovou část a pak vyberte Hotovo.

      Snímek obrazovky s podrobnostmi o triggeru požadavku HTTP V části Zadejte nebo vložte ukázkovou datovou část JSON jsou viditelná některá data datové části.

      Ukázková datová část, která je na obrázku výše, vygeneruje následující schéma, které se zobrazí v triggeru:

      {
         "type": "object",
         "properties": {
            "address": {
               "type": "object",
               "properties": {
                  "number": {
                     "type": "integer"
                  },
                  "street": {
                     "type": "string"
                  },
                  "city": {
                     "type": "string"
                  },
                  "postalCode": {
                     "type": "integer"
                  },
                  "country": {
                     "type": "string"
                  }
               }
            }
         }
      }
      
  5. Pod trigger přidejte všechny další akce, které chcete použít ke zpracování přijaté zprávy.

    Můžete například přidat akci, která odešle e-mail s konektorem Office 365 Outlook.

  6. Uložte pracovní postup aplikace logiky.

    Tento krok vygeneruje adresu URL zpětného volání pro trigger požadavku ve vašem pracovním postupu. Později tuto adresu URL zpětného volání použijete v kódu triggeru Azure Service Bus Queue. Adresa URL zpětného volání se zobrazí ve vlastnosti HTTP POST URL .

    Snímek obrazovky s podrobnostmi o triggeru požadavku HTTP Vedle položky HTTP POST URL je viditelná adresa URL.

Vytvoření funkce

Dále vytvořte funkci, která naslouchá frontě a při přijetí zprávy zavolá koncový bod v triggeru Požadavku.

  1. V Azure Portal otevřete aplikaci funkcí.

  2. V navigační nabídce aplikace funkcí vyberte Funkce. V podokně Funkce vyberte Vytvořit.

    Snímek obrazovky aplikace funkcí se zvýrazněnou možností Funkce v nabídce aplikace funkcí Otevře se stránka Functions a zvýrazní se možnost Vytvořit.

  3. V části Vybrat šablonu vyberte šablonu s názvem aktivační událost Azure Service Bus fronty. Jakmile se zobrazí část Podrobnosti o šabloně , která zobrazuje různé možnosti podle výběru šablony, zadejte následující informace:

    Vlastnost Hodnota Popis
    Nová funkce <název funkce> Zadejte název funkce.
    Připojení ke službě Service Bus <Připojení service-bus> Vyberte Nové a nastavte připojení pro vaši frontu služby Service Bus, která používá naslouchací proces sady Service Bus SDK OnMessageReceive() .
    Název fronty <název_fronty> Zadejte název fronty.

    Snímek obrazovky s podoknem Vytvořit funkci se zvýrazněnou možností aktivační události Azure Service Bus fronty a zadanými podrobnostmi o příkladu šablony

  4. Po dokončení vyberte Vytvořit.

    Na Azure Portal se teď zobrazuje stránka Přehled pro novou funkci triggeru Azure Service Bus Queue.

  5. Teď napište základní funkci, která zavolá koncový bod pro pracovní postup aplikace logiky, který jste vytvořili dříve. Před napsání funkce si projděte následující důležité informace:

    Následující příklad používá metodu v asynchronnímTask.Run režimu. Další informace najdete v tématu Asynchronní programování s asynchronními funkcemi a await. V příkladu se application/json používá také typ obsahu zprávy, ale tento typ můžete podle potřeby změnit.

    using System;
    using System.Threading.Tasks;
    using System.Net.Http;
    using System.Text;
    
    // Set up the URI for the logic app workflow. You can also get this value on the logic app's 'Overview' pane, under the trigger history, or from an environment variable.
    private static string logicAppUri = @"https://prod-05.westus.logic.azure.com:443/workflows/<remaining-callback-URL>";
    
    // Reuse the instance of HTTP clients if possible. For more information, see https://learn.microsoft.com/azure/azure-functions/manage-connections.
    private static HttpClient httpClient = new HttpClient();
    
    public static async Task Run(string myQueueItem, TraceWriter log) 
    {
       log.Info($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
       var response = await httpClient.PostAsync(logicAppUri, new StringContent(myQueueItem, Encoding.UTF8, "application/json")); 
    }
    

Testování pracovního postupu aplikace logiky

Pro účely testování přidejte zprávu do fronty služby Service Bus pomocí následujícího postupu nebo jiného nástroje:

  1. V Azure Portal otevřete obor názvů služby Service Bus.

  2. V navigační nabídce oboru názvů služby Service Bus vyberte Fronty.

    Snímek obrazovky s oborem názvů služby Service Bus V navigační nabídce je zvýrazněná možnost Fronty.

  3. Vyberte frontu služby Service Bus, kterou jste dříve propojili se svou funkcí pomocí připojení služby Service Bus.

  4. V navigační nabídce fronty vyberte Service Bus Explorer a pak na panelu nástrojů vyberte Odeslat zprávy.

    Snímek obrazovky se stránkou fronty služby Service Bus na portálu se zvýrazněnou možností Odeslat zprávy V navigační nabídce je zvýrazněná možnost Service Bus Explorer.

  5. V podokně Odeslat zprávy zadejte zprávu, která se má odeslat do fronty služby Service Bus.

    Tato zpráva aktivuje pracovní postup aplikace logiky.

Další kroky