Självstudie: Svara på Azure Service Bus-händelser som tas emot via Azure Event Grid med hjälp av Azure Functions
I den här självstudien får du lära dig hur du svarar på Azure Service Bus-händelser som tas emot via Azure Event Grid med hjälp av Azure Functions och Azure Logic Apps.
I den här självstudien lär du dig att:
- Skapa ett namnområde för Service Bus
- Förbereda ett exempelprogram för att skicka meddelanden
- Skicka meddelanden till Service Bus-ämnet
- Ta emot meddelanden med Logic Apps
- Konfigurera en testfunktion i Azure
- Anslut funktionen och namnområdet via Event Grid
- Ta emot meddelanden med Azure Functions
Förutsättningar
Om du inte har en Azure-prenumeration kan du skapa ettkostnadsfritt konto innan du börjar.
Skapa ett namnområde för Service Bus
Följ anvisningarna i den här självstudien: Snabbstart: Använd Azure Portal för att skapa ett Service Bus-ämne och prenumerationer på ämnet för att utföra följande uppgifter:
- Skapa ett Premium Service Bus-namnområde.
- Hämta anslutningssträng.
- Skapa ett Service Bus-ämne.
- Skapa en prenumeration på ämnet. Du behöver bara en prenumeration i den här självstudien, så du behöver inte skapa prenumerationerna S2 och S3.
Skicka meddelanden till Service Bus-ämnet
I det här steget använder du ett exempelprogram för att skicka meddelanden till det Service Bus-ämne som du skapade i föregående steg.
Klona GitHub azure-service-bus-lagringsplatsen eller ladda ned zip-filen och extrahera filer från den.
I Visual Studio går du till mappen \samples\DotNet\Azure.Messaging.ServiceBus\ServiceBusEventGridIntegrationV2 och öppnar sedan filen SBEventGridIntegration.sln .
I fönstret Solution Explorer expanderar du Projektet MessageSender och väljer Program.cs.
Ersätt
<SERVICE BUS NAMESPACE - CONNECTION STRING>
med anslutningssträng till Service Bus-namnområdet och<TOPIC NAME>
med namnet på ämnet.const string ServiceBusConnectionString = "<SERVICE BUS NAMESPACE - CONNECTION STRING>"; const string TopicName = "<TOPIC NAME>";
Skapa och kör programmet för att skicka 5 testmeddelanden (
const int numberOfMessages = 5;
) till Service Bus-ämnet.
Ytterligare förutsättningar
Installera Visual Studio 2022 och inkludera arbetsbelastningen För Azure-utveckling . Den här arbetsbelastningen innehåller Azure-funktionsverktyg som du behöver för att skapa, skapa och distribuera Azure Functions-projekt i Visual Studio.
Distribuera funktionsappen
Kommentar
Mer information om hur du skapar och distribuerar en Azure Functions-app finns i Utveckla Azure Functions med Visual Studio
Öppna ReceiveMessagesOnEvent.cs fil från FunctionApp1-projektet för den SBEventGridIntegration.sln lösningen.
Ersätt
<SERVICE BUS NAMESPACE - CONNECTION STRING>
med anslutningssträng till Service Bus-namnområdet. Den bör vara samma som den som du använde i Program.cs-filen i MessageSender-projektet i samma lösning.Högerklicka på FunctionApp1 och välj Publicera.
På sidan Publicera väljer du Start. De här stegen kan skilja sig från vad du ser, men publiceringsprocessen bör vara liknande.
I guiden Publicera går du till sidan Mål och väljer Azure som mål.
Välj Azure Function App (Windows) på sidan Specifikt mål.
På sidan Functions-instans väljer du Skapa ny.
Följ dessa steg på sidan Funktionsapp (Windows ):
- Ange ett namn för funktionsappen.
- Välj en Azure-prenumeration.
- Välj en befintlig resursgrupp eller skapa en ny resursgrupp. I den här självstudien väljer du den resursgrupp som har Service Bus-namnområdet.
- Välj en plantyp för App Service.
- Välj en plats. Välj samma plats som Service Bus-namnområdet.
- Välj en befintlig Azure Storage eller välj Ny för att skapa ett nytt Lagringskonto som ska användas av Functions-appen.
- För Application Insights väljer du en befintlig Application Insights-instans som ska associeras med Azure-funktionen eller skapar en.
- Välj Skapa för att skapa Functions-appen.
På sidan Functions-instans i guiden Publicera väljer du Slutför.
På sidan Publicera i Visual Studio väljer du Publicera för att publicera Functions-appen till Azure.
I fönstret Utdata ser du meddelandena från build och publish och bekräftar att båda lyckades.
Om publiceringen misslyckas med ett autentiseringsproblem kontrollerar du att alternativet SCM Basic Auth Publishing är aktiverat för Azure Functions-appen.
På sidan Publicera går du till avsnittet Värd och väljer ... (ellips)och välj Öppna i Azure Portal.
I Azure Portal går du till sidan Funktionsapp och väljer EventGridTriggerFunction i listan. Vi rekommenderar att du använder Event Grid-utlösaren med Azure Functions eftersom den har några fördelar jämfört med att använda HTTP-utlösaren. Mer information finns i Azure-funktionen som händelsehanterare för Event Grid-händelser.
På sidan Funktion för EventGridTriggerFunction växlar du till fliken Anrop .
Håll den här sidan öppen på en flik i webbläsaren. Du uppdaterar den här sidan för att se anrop för den här funktionen senare.
Ansluta funktionen och Service Bus-namnområdet via Event Grid
I det här avsnittet kopplar du samman funktionen och Service Bus-namnområdet med hjälp av Azure Portal.
Följ dessa steg för att skapa en Azure Event Grid-prenumeration:
I Azure Portal går du till Service Bus-namnområdet och väljer sedan Händelser i den vänstra rutan. Ditt namnområdesfönster öppnas med två Event Grid-prenumerationer i fönstret till höger.
Välj + Händelseprenumeration i verktygsfältet.
Gör följande på sidan Skapa händelseprenumeration :
Ange ett namn för prenumerationen.
Ange ett namn för systemämnet. Systemämnen är ämnen som skapas för Azure-resurser som Azure Storage-konto och Azure Service Bus. Mer information om systemämnen finns i Översikt över systemämnen.
Välj Azure-funktion för Slutpunktstyp och välj Konfigurera en slutpunkt.
På sidan Välj Azure-funktion väljer du prenumerationen, resursgruppen, funktionsappen, facket och funktionen och väljer sedan Bekräfta valet.
På sidan Skapa händelseprenumeration växlar du till fliken Filter och utför följande uppgifter:
Växla till fliken Händelseprenumerationer på sidan Händelser och bekräfta att du ser händelseprenumerationen i listan.
Övervaka Functions-appen
Meddelandena som du skickade till Service Bus-ämnet tidigare vidarebefordras till prenumerationen (S1). Event Grid vidarebefordrar meddelandena i prenumerationen till Azure-funktionen. I det här steget i självstudien bekräftar du att funktionen anropades och visar de loggade informationsmeddelandena.
På sidan för din Azure-funktionsapp växlar du till fliken Anrop om den inte redan är aktiv. Du bör se en post för varje meddelande som publiceras i Service Bus-ämnet. Om du inte ser dem uppdaterar du sidan efter att ha väntat i några minuter.
Välj anropet i listan för att se informationen.
Du kan också använda fliken Loggar för att se loggningsinformationen när meddelandena skickas. Det kan finnas en viss fördröjning, så ge det några minuter att se de loggade meddelandena.
Felsöka
Om du inte ser några funktionsanrop efter att ha väntat och uppdaterat någon gång följer du dessa steg:
Bekräfta att meddelandena nådde Service Bus-ämnet. Se räknaren för inkommande meddelanden på sidan Service Bus-ämne . I det här fallet körde jag MessageSender-programmet två gånger, så jag ser 10 meddelanden (5 meddelanden för varje körning).
Bekräfta att det inte finns några aktiva meddelanden i Service Bus-prenumerationen. Om du inte ser några händelser på den här sidan kontrollerar du att service bus-prenumerationssidan inte visar något antal aktiva meddelanden. Om talet för den här räknaren är större än noll vidarebefordras inte meddelandena i prenumerationen till hanteringsfunktionen (händelseprenumerationshanteraren) av någon anledning. Kontrollera att du har konfigurerat händelseprenumerationen korrekt.
Du ser även levererade händelser på sidan Händelser i Service Bus-namnområdet.
Du kan också se att händelserna levereras på sidan Händelseprenumeration . Du kan komma till den här sidan genom att välja händelseprenumerationen på sidan Händelser .
Relaterat innehåll
- Läs mer om Azure Event Grid.
- Läs mer om Azure Functions.
- Läs mer om Azure Service Bus.