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
Účet a předplatné Azure. Pokud předplatné nemáte, vytvořte si bezplatný účet.
Obor názvů služby Service Bus. Pokud obor názvů nemáte, nejprve ho vytvořte. Další informace najdete v tématu Co je Azure Service Bus?
Aplikace funkcí, což je kontejner pro vaše funkce. Pokud nemáte aplikaci funkcí, nejprve vytvořte aplikaci funkcí a ujistěte se, že jste jako vlastnost zásobníku modulu runtime vybrali .NET.
Základní znalosti o vytváření pracovních postupů aplikací logiky Další informace najdete v tématu Vytvoření ukázkového pracovního postupu aplikace logiky Consumption v Azure Logic Apps s více tenanty.
Vytvoření pracovního postupu aplikace logiky
V Azure Portal vytvořte prázdnou aplikaci logiky Consumption výběrem šablony Prázdná aplikace logiky.
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.
V seznamu triggerů vyberte aktivační událost s názvem Při přijetí požadavku HTTP.
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.
Pokud chcete zadat schéma, zadejte schéma do pole Schéma JSON v textu požadavku .
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.
V triggeru požadavku vyberte Použít ukázkovou datovou část ke generování schématu.
V části Zadejte nebo vložte ukázkovou datovou část JSON zadejte ukázkovou datovou část a pak vyberte Hotovo.
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" } } } } }
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.
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 .
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.
V Azure Portal otevřete aplikaci funkcí.
V navigační nabídce aplikace funkcí vyberte Funkce. V podokně Funkce vyberte Vytvořit.
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. Po dokončení vyberte Vytvořit.
Na Azure Portal se teď zobrazuje stránka Přehled pro novou funkci triggeru Azure Service Bus Queue.
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:
Aktivujte funkci pomocí zprávy ze zprávy fronty.
Kvůli možným souběžným spouštěním funkcí, velkému množství nebo vysokému zatížení se vyhněte vytváření instancí třídy HTTPClient pomocí
using
příkazu a přímému vytváření instancí HTTPClient na požadavek. Další informace najdete v tématu Použití HttpClientFactory k implementaci odolných požadavků HTTP.Pokud je to možné, znovu použijte instanci klientů HTTP. Další informace najdete v tématu Správa připojení v Azure Functions.
Následující příklad používá metodu v asynchronním
Task.Run
režimu. Další informace najdete v tématu Asynchronní programování s asynchronními funkcemi a await. V příkladu seapplication/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:
V Azure Portal otevřete obor názvů služby Service Bus.
V navigační nabídce oboru názvů služby Service Bus vyberte Fronty.
Vyberte frontu služby Service Bus, kterou jste dříve propojili se svou funkcí pomocí připojení služby Service Bus.
V navigační nabídce fronty vyberte Service Bus Explorer a pak na panelu nástrojů vyberte Odeslat zprávy.
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.