Tutorial: Ausführen von Azure Functions in Azure Stream Analytics-Aufträgen
In diesem Tutorial erstellen Sie einen Azure Stream Analytics-Auftrag, der Ereignisse aus Azure Event Hubs liest, eine Abfrage der Ereignisdaten ausführt und dann eine Azure-Funktion aufruft, die in eine Azure Cache for Redis-Instanz schreibt.
Hinweis
- Sie können Azure Functions in Azure Stream Analytics ausführen, indem Sie Functions als eine der Senken (Ausgaben) für den Stream Analytics-Auftrag konfigurieren. Functions ist eine ereignisgesteuerte On-Demand-Computeumgebung, mit der Sie Code implementieren können, der durch in Azure- oder Drittanbieterdiensten auftretende Ereignisse ausgelöst wird. Aufgrund der Möglichkeit, auf Trigger zu antworten, ist Functions die ideale Ausgabe für Stream Analytics-Aufträge.
- Stream Analytics ruft Functions über HTTP-Trigger auf. Der Functions-Ausgabeadapter ermöglicht Benutzern das Verbinden von Functions mit Stream Analytics, sodass die Ereignisse basierend auf Stream Analytics-Abfragen ausgelöst werden können.
- Eine Verbindung mit Azure Functions innerhalb eines virtuellen Netzwerks (VNET) aus einem Stream Analytics-Auftrag, der in einem mehrinstanzenfähigen Cluster ausgeführt wird, wird nicht unterstützt.
In diesem Tutorial lernen Sie Folgendes:
- Erstellen einer Azure Event Hubs-Instanz
- Erstellen einer Azure Cache for Redis-Instanz
- Erstellen einer Azure Function
- Erstellen eines Stream Analytics-Auftrags
- Konfigurieren des Event Hubs als Eingabe und der Funktion als Ausgabe
- Ausführen des Stream Analytics-Auftrags
- Überprüfen der Ergebnisse in Azure Cache for Redis
Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
Voraussetzungen
Stellen Sie zunächst sicher, dass Sie folgende Schritte abgeschlossen haben:
- Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen.
- Laden Sie die Anrufereignisgenerator-App, TelcoGenerator.zip aus dem Microsoft Download Center herunter, oder rufen Sie den Quellcode von GitHub ab.
Anmelden bei Azure
Melden Sie sich beim Azure-Portal an.
Erstellen eines Ereignis-Hubs
Sie müssen einige Beispieldaten an einen Event Hub senden, bevor Stream Analytics den Datenstrom der betrügerischen Anrufe analysieren kann. In diesem Tutorial senden Sie Daten mithilfe von Azure Event Hubs an Azure.
Gehen Sie wie folgt vor, um einen Event Hub zu erstellen und Anrufdaten an diesen Event Hub zu senden:
Melden Sie sich beim Azure-Portal an.
Wählen Sie im linken Menü Alle Dienste aus, wählen SieInternet der Dinge aus, zeigen Sie mit der Maus auf Event Hubs, und wählen Sie dann die Schaltfläche + (Hinzufügen) aus.
Führen Sie auf der Seite Namespace erstellen die folgenden Schritte aus:
Wählen Sie ein Azure-Abonnement aus, unter dem Sie den Event Hub erstellen möchten.
Wählen Sie unter Ressourcengruppe die Option Neu erstellen aus, und geben Sie einen Namen für die Ressourcengruppe ein. Der Event Hubs-Namespace wird in dieser Ressourcengruppe erstellt.
Geben Sie unter Namespacename einen eindeutigen Namen für den Event Hubs-Namespace ein.
Wählen Sie als Standort die Region aus, in der Sie den Namespace erstellen möchten.
Wählen Sie unter Tarif die Option Standard aus.
Wählen Sie am unteren Rand der Seite die Option Bewerten + erstellen aus.
Wählen Sie unten auf der Seite Überprüfen und erstellen des Assistenten für die Erstellung von Namespaces Erstellen aus, nachdem Sie alle Einstellungen überprüft haben.
Nachdem der Namespace erfolgreich bereitgestellt wurde, wählen Sie Gehe zu Ressource aus, um zur Seite Event Hubs-Namespace zu navigieren.
Wählen Sie auf der Seite Event Hubs-Namespace in der Befehlsleiste +Event Hub aus.
Geben Sie auf der Seite Event Hub erstellen einen Namenfür den Event Hub ein. Legen Sie den Wert für Partitionsanzahl auf 2 fest. Verwenden Sie für die restlichen Einstellungen die Standardoptionen, und wählen Sie Überprüfen und erstellen aus.
Wählen Sie unten auf der Seite Überprüfen + erstellen die Option Erstellen aus. Warten Sie, bis die Bereitstellung erfolgreich abgeschlossen wurde.
Gewähren des Zugriffs auf den Event Hub und Abrufen einer Verbindungszeichenfolge
Bevor eine Anwendung Daten an Azure Event Hubs senden kann, muss der Event Hub mit einer Richtlinie versehen werden, die einen Zugriff ermöglicht. Die Zugriffsrichtlinie erzeugt eine Verbindungszeichenfolge, die Autorisierungsinformationen enthält.
Wählen Sie auf der Seite Event Hubs-Namespace die Option Freigegebene Zugriffsrichtlinien im linken Menü aus.
Wählen Sie aus der Liste der Richtlinien RootManageSharedAccessKey aus.
Wählen Sie dann neben Verbindungszeichenfolge – Primärschlüssel die Schaltfläche „Kopieren“ aus.
Fügen Sie die Verbindungszeichenfolge in einen Texteditor ein. Sie benötigen diese Verbindungszeichenfolge im nächsten Abschnitt.
Die Verbindungszeichenfolge sieht wie folgt aus:
Endpoint=sb://<Your event hub namespace>.servicebus.windows.net/;SharedAccessKeyName=<Your shared access policy name>;SharedAccessKey=<generated key>
Beachten Sie, dass die Verbindungszeichenfolge mehrere durch Strichpunkte getrennte Schlüssel-Wert-Paare enthält: Endpoint, SharedAccessKeyName und SharedAccessKey.
Starten der Ereignisgenerator-Anwendung
Vor dem Starten der TelcoGenerator-App sollten Sie diese so konfigurieren, dass Daten an die zuvor erstellten Azure Event Hubs gesendet werden.
Extrahieren Sie den Inhalt der Datei TelcoGenerator.zip.
Öffnen Sie die
TelcoGenerator\TelcoGenerator\telcodatagen.exe.config
-Datei in einem Texteditor Ihrer Wahl. Es gibt mehr als eine.config
-Datei, stellen Sie also sicher, dass Sie die richtige öffnen.Aktualisieren Sie das
<appSettings>
-Element in der CONFIG-Datei mit den folgenden Details:- Legen Sie den Wert des Schlüssels EventHubName auf den Wert von EntityPath am Ende der Verbindungszeichenfolge fest.
- Legen Sie den Wert des Schlüssels Microsoft.ServiceBus.ConnectionString auf die Verbindungszeichenfolge für den Namespace fest. Wenn Sie eine Verbindungszeichenfolge für einen Event Hub verwenden, nicht für einen Namespace, entfernen Sie den Wert
EntityPath
(;EntityPath=myeventhub
) am Ende. Nicht vergessen, um das Semikolon vor dem EntityPath-Wert zu entfernen.
Speichern Sie die Datei.
Öffnen Sie nun ein Befehlsfenster, und wechseln Sie zu dem Ordner, in dem Sie die TelcoGenerator-Anwendung entzippt haben. Geben Sie dann den folgenden Befehl ein:
.\telcodatagen.exe 1000 0.2 2
Für diesen Befehl werden die folgenden Parameter verwendet:
- Anzahl von Anrufdatensätzen pro Stunde.
- Betrugswahrscheinlichkeit in Prozent (gibt an, wie oft die App einen betrügerischen Anruf simulieren soll). Der Wert „0.2“ bedeutet, dass etwa 20 Prozent der Anrufdatensätze betrügerische Anrufe simulieren.
- Dauer in Stunden (also wie lange die App ausgeführt werden soll). Sie können die App auch jederzeit beenden, indem Sie den Prozess über die Befehlszeile beenden (STRG+C).
Nach wenigen Sekunden werden auf dem Bildschirm in der App die Telefonanrufdatensätze angezeigt, während diese an den Event Hub gesendet werden. Die Telefonanrufdaten enthalten die folgenden Felder:
Datensatz Definition CallrecTime Der Zeitstempel für die Startzeit des Anrufs. SwitchNum Die für die Anrufverbindung verwendete Vermittlungsstelle. In diesem Beispiel werden die Vermittlungen durch Zeichenfolgen ausgedrückt, die das Ursprungsland/die Ursprungsregion (USA, China, Großbritannien, Deutschland oder Australien) darstellen. CallingNum Die Telefonnummer des Anrufers. CallingIMSI Die IMSI (International Mobile Subscriber Identity). Dies ist eine eindeutige ID des Anrufers. CalledNum Die Telefonnummer des Angerufenen. CalledIMSI International Mobile Subscriber Identity (IMSI). Dies ist eine eindeutige ID des Empfängers.
Erstellen eines Stream Analytics-Auftrags
Nachdem Sie nun über einen Datenstrom mit Anrufereignissen verfügen, können Sie einen Stream Analytics-Auftrag erstellen, mit dem Daten aus dem Event Hub gelesen werden.
- Navigieren Sie zum Azure-Portal, um einen Stream Analytics-Auftrag zu erstellen.
- Wählen Sie Ressource erstellen aus, und suchen Sie nach Stream Analytics-Auftrag. Wählen Sie die Kachel Stream Analytics-Auftrag und dann Erstellen aus.
- Führen Sie auf der Seite Neuer Stream Analytics-Auftrag die folgenden Schritte aus:
Wählen Sie unter Abonnement das Abonnement aus, das den Event Hubs-Namespace enthält.
Wählen Sie als Ressourcengruppe die zuvor erstellte Ressourcengruppe aus.
Geben Sie im Abschnitt Instanzdetails unter Name einen eindeutigen Namen für den Stream Analytics-Auftrag ein.
Wählen Sie unter Region die Region aus, in der Sie den Stream Analytics-Auftrag erstellen möchten. Es empfiehlt sich, den Auftrag und den Event Hub in derselben Region zu platzieren, damit Sie die optimale Leistung erzielen und Ihnen keine Kosten für die Übertragung von Daten zwischen Regionen entstehen.
Wählen Sie unter Hostingumgebung die Option Cloud aus, wenn sie noch nicht ausgewählt ist. Für Stream Analytics-Aufträge ist eine Cloud- oder Edge-Bereitstellung möglich. Mit der Option Cloud können die Aufträge in Azure Cloud und mit der Option Edge auf einem IoT Edge-Gerät bereitgestellt werden.
Wählen Sie für Streamingeinheiten den Wert 1 aus. Streamingeinheiten sind die Computingressourcen, die für die Ausführung eines Auftrags erforderlich sind. Standardmäßig ist dieser Wert auf 1 festgelegt. Informationen zum Skalieren von Streamingeinheiten finden Sie im Artikel Überblick über Streamingeinheiten und Informationen zu Anpassungen.
Wählen Sie am unteren Rand der Seite die Option Bewerten + erstellen aus.
- Überprüfen Sie auf der Seite Überprüfen und erstellen die Einstellungen, und wählen Sie dann Erstellen aus, um den Stream Analytics-Auftrag zu erstellen.
- Nachdem der Auftrag bereitgestellt wurde, wählen Sie Gehe zu Ressource, um zur Seite Stream Analytics-Auftrag zu navigieren.
Konfigurieren einer Auftragseingabe
Im nächsten Schritt wird für den Auftrag eine Eingabequelle zum Lesen von Daten definiert. Dabei wird der Event Hub verwendet, den Sie im vorherigen Abschnitt erstellt haben.
Wählen Sie auf der Seite Stream Analytics-Auftrag im Abschnitt Auftragstopologie im linken Menü Eingaben aus.
Wählen Sie auf der Seite Eingaben die Option + Eingabe hinzufügen und Event Hub aus.
Führen Sie auf der Seite Event Hub die folgenden Schritte aus:
Geben Sie unter Eingabealias die Zeichenfolge CallStream ein. Der Eingabealias ist ein Anzeigename, der Ihre Eingabe identifiziert. Der Eingabealias darf nur alphanumerische Zeichen, Bindestriche und Unterstriche enthalten und muss zwischen 3 und 63 Zeichen lang sein.
Wählen Sie unter Abonnement das Azure-Abonnement aus, unter dem Sie den Event Hub erstellt haben. Der Event Hub kann sich unter demselben oder einem anderen Abonnement wie der Stream Analytics-Auftrag befinden.
Wählen Sie als Event Hubs-Namespace den Event Hubs-Namespace aus, den Sie im vorherigen Abschnitt erstellt haben. Alle Namespaces, die unter Ihrem aktuellen Abonnement verfügbar sind, sind in der Dropdownliste aufgeführt.
Wählen Sie unter Event Hub-Name den Event Hub aus, den Sie im vorherigen Abschnitt erstellt haben. Alle Event Hubs, die im ausgewählten Namespace verfügbar sind, sind in der Dropdownliste aufgeführt.
Behalten Sie für Event Hub-Consumergruppe die Option Neu erstellen bei, sodass im Event Hub eine neue Consumergruppe erstellt wird. Es wird empfohlen, für jeden Stream Analytics-Auftrag eine eigene Consumergruppe zu verwenden. Wenn keine Consumergruppe angegeben wird, verwendet der Stream Analytics-Auftrag die
$Default
-Consumergruppe. Wenn ein Auftrag eine Selbstverknüpfung oder mehrere Eingaben enthält, können einige Eingaben später unter Umständen von mehreren Lesern gelesen werden. Dies wirkt sich auf die Anzahl der Leser in einer einzelnen Consumergruppe aus.Wählen Sie für Authentifizierungsmodus die Option Verbindungszeichenfolge aus. Es ist einfacher, das Tutorial mit dieser Option zu testen.
Wählen Sie unter Event Hub-Richtlinienname die Option Vorhandene verwenden und dann die Richtlinie aus, die Sie zuvor erstellt haben.
Wählen Sie unten auf der Seite Speichern aus.
Erstellen einer Azure Cache for Redis-Instanz
Erstellen Sie einen Cache in Azure Cache für Redis mithilfe der in Erstellen eines Azure Cache for Redis-Instanz beschriebenen Schritte.
Wählen Sie nach der Erstellung des Caches unter Einstellungen die Option Zugriffsschlüssel aus. Notieren Sie sich die Primäre Verbindungszeichenfolge.
Erstellen einer Funktion in Azure Functions, die Daten in Azure Cache for Redis schreiben kann
Lesen Sie den Abschnitt Erstellen einer Funktions-App in der Dokumentation zu Functions. Dieses Beispiel basiert auf:
Erstellen Sie eine standardmäßige HttpTrigger-Funktions-App in Visual Studio Code, indem Sie diesem Tutorial folgen. Die folgenden Informationen werden verwendet: Sprache
C#
, Runtime.NET 6
(unter Funktion v4), VorlageHTTP trigger
.Installieren Sie die Redis-Clientbibliothek, indem Sie den folgenden Befehl in einem Terminal ausführen, das sich im Projektordner befindet:
dotnet add package StackExchange.Redis --version 2.2.88
Fügen Sie die Elemente
RedisConnectionString
undRedisDatabaseIndex
im AbschnittValues
Ihrerlocal.settings.json
hinzu, und setzen Sie die Verbindungszeichenfolge des Zielservers ein:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "", "FUNCTIONS_WORKER_RUNTIME": "dotnet", "RedisConnectionString": "Your Redis Connection String", "RedisDatabaseIndex":"0" } }
Der Redis-Datenbankindex ist die Zahl von 0 bis 15, die die Datenbank in der Instanz bezeichnet.
Ersetzen Sie die gesamte Funktion (CS-Datei im Projekt) durch den folgenden Codeausschnitt. Aktualisieren Sie den Namespace, den Klassennamen und den Funktionsnamen durch Ihre eigenen Werte:
using System; using System.IO; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Extensions.Http; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using StackExchange.Redis; namespace Company.Function { public static class HttpTrigger1{ [FunctionName("HttpTrigger1")] public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get","post", Route = null)] HttpRequest req, ILogger log) { // Extract the body from the request string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); if (string.IsNullOrEmpty(requestBody)) {return new StatusCodeResult(204);} // 204, ASA connectivity check dynamic data = JsonConvert.DeserializeObject(requestBody); // Reject if too large, as per the doc if (data.ToString().Length > 262144) {return new StatusCodeResult(413);} //HttpStatusCode.RequestEntityTooLarge string RedisConnectionString = Environment.GetEnvironmentVariable("RedisConnectionString"); int RedisDatabaseIndex = int.Parse(Environment.GetEnvironmentVariable("RedisDatabaseIndex")); using (var connection = ConnectionMultiplexer.Connect(RedisConnectionString)) { // Connection refers to a property that returns a ConnectionMultiplexer IDatabase db = connection.GetDatabase(RedisDatabaseIndex); // Parse items and send to binding for (var i = 0; i < data.Count; i++) { string key = data[i].Time + " - " + data[i].CallingNum1; db.StringSet(key, data[i].ToString()); log.LogInformation($"Object put in database. Key is {key} and value is {data[i].ToString()}"); // Simple get of data types from the cache string value = db.StringGet(key); log.LogInformation($"Database got: {key} => {value}"); } } return new OkResult(); // 200 } } }
Wenn Stream Analytics die Ausnahme „HTTP-Anforderungseinheit zu groß“ von der Funktion empfängt, verringert der Dienst die Größe der an Functions gesendeten Batches. Der folgende Code stellt sicher, dass Stream Analytics keine zu großen Batches sendet. Stellen Sie sicher, dass die Werte für die maximal zulässige Batchanzahl und -größe in der Funktion mit den Werten übereinstimmen, die im Stream Analytics-Portal eingegeben wurden.
Die Funktion kann jetzt in Azure veröffentlicht werden.
Öffnen Sie die Funktion im Azure-Portal, und legen Sie Anwendungseinstellungen für
RedisConnectionString
undRedisDatabaseIndex
fest.
Aktualisieren des Stream Analytics-Auftrags mit der Funktion als Ausgabe
Öffnen Sie den Stream Analytics-Auftrag im Azure-Portal.
Navigieren Sie zu Ihrer Funktion, und wählen Sie Übersicht>Ausgaben>Hinzufügen aus. Um eine neue Ausgabe hinzuzufügen, wählen Sie Azure-Funktion als Senkenoption aus. Der Functions-Ausgabeadapter hat die folgenden Eigenschaften:
Eigenschaftenname Beschreibung Ausgabealias Ein Anzeigename, der in der Auftragsabfrage verwendet wird, um auf diese Ausgabe zu verweisen. Importoption Sie können die Funktion aus dem aktuellem Abonnement verwenden, oder Sie geben die Einstellungen manuell an, wenn sich die Funktion in einem anderen Abonnement befindet. Funktionen-App Der Name der Funktions-App Funktion Der Name der Funktion in Ihrer Funktions-App (Name Ihrer run.csx-Funktion) Max Batch Size Legt die maximale Größe (in Bytes) für jeden Ausgabebatch fest, der an die Funktion gesendet wird. Dieser Wert ist standardmäßig auf 262.144 Byte (256 KB) festgelegt. Max Batch Count Gibt die maximale Anzahl von Ereignissen in jedem Batch an, die an die Funktion gesendet wird. Der Standardwert ist 100. Diese Eigenschaft ist optional. Schlüssel Ermöglicht die Verwendung einer Funktion aus einem anderen Abonnement. Geben Sie den Schlüsselwert für den Zugriff auf die Funktion an. Diese Eigenschaft ist optional. Geben Sie einen Namen für den Ausgabealias an. In diesem Tutorial lautet der Name saop1, aber Sie können einen beliebigen Namen Ihrer Wahl verwenden. Geben Sie weitere Details an.
Öffnen Sie den Stream Analytics-Auftrag, und aktualisieren Sie die Abfrage wie folgt.
Wichtig
Im folgenden Beispielskript wird davon ausgegangen, dass Sie CallStream als Eingabenamen und saop1 als Ausgabenamen verwendet haben. Falls Sie andere Namen verwendet haben, müssen Sie die Abfrage entsprechend aktualisieren.
SELECT System.Timestamp as Time, CS1.CallingIMSI, CS1.CallingNum as CallingNum1, CS2.CallingNum as CallingNum2, CS1.SwitchNum as Switch1, CS2.SwitchNum as Switch2 INTO saop1 FROM CallStream CS1 TIMESTAMP BY CallRecTime JOIN CallStream CS2 TIMESTAMP BY CallRecTime ON CS1.CallingIMSI = CS2.CallingIMSI AND DATEDIFF(ss, CS1, CS2) BETWEEN 1 AND 5 WHERE CS1.SwitchNum != CS2.SwitchNum
Starten Sie die Anwendung „telcodatagen.exe“, indem Sie in der Befehlszeile den folgenden Befehl ausführen. Der Befehl hat das Format
telcodatagen.exe [#NumCDRsPerHour] [SIM Card Fraud Probability] [#DurationHours]
.telcodatagen.exe 1000 0.2 2
Starten des Stream Analytics-Auftrags
Auf der Seite Überwachen Ihrer Azure-Funktion sehen Sie, dass die Funktion aufgerufen wurde.
Wählen Sie auf der Seite Azure Cache for Redis Ihres Caches im linken Menü Metriken aus, fügen Sie die Metrik Cacheschreibvorgänge hinzu, und legen Sie die Dauer auf Letzte Stunde fest. Ein Diagramm ähnlich der folgenden Abbildung wird angezeigt:
Überprüfen der Ergebnisse in Azure Cache for Redis
Abrufen des Schlüssels aus Azure Functions-Protokollen
Rufen Sie zunächst den Schlüssel für einen Eintrag ab, der in Azure Cache for Redis eingefügt wurde. Im Code wird der Schlüssel in der Azure-Funktion berechnet, wie im folgenden Codeschnipsel gezeigt:
string key = data[i].Time + " - " + data[i].CallingNum1;
db.StringSet(key, data[i].ToString());
log.LogInformation($"Object put in database. Key is {key} and value is {data[i].ToString()}");
Navigieren Sie zum Azure-Portal, und suchen Sie die Azure Functions-App.
Wählen Sie im linken Menü die Option Funktionen aus.
Wählen Sie HTTPTrigger1 aus der Liste der Funktionen aus.
Wählen Sie im Menü auf der linken Seite Überwachen aus.
Wechseln Sie zur Registerkarte Protokolle.
Notieren Sie sich den Schlüssel aus der Informationsmeldung, wie im folgenden Screenshot zu sehen. Sie verwenden diesen Schlüssel, um den Wert in Azure Cache for Redis zu suchen.
Verwenden des Schlüssels zum Suchen des Eintrags in Azure Cache for Redis
Browsen Sie zum Azure-Portal, und suchen Sie Ihre Azure Cache for Redis-Instanz. Wählen Sie Konsole aus.
Überprüfen Sie mit Azure Cache for Redis-Befehlen, ob Ihre Daten sich in Azure Cache for Redis befinden. (Im Befehl wird das Format „Get {key}“ verwendet.) Verwenden Sie den Schlüssel, den Sie aus den Monitor-Protokollen für die Azure-Funktion (im vorherigen Abschnitt) kopiert haben.
Get "KEY-FROM-THE-PREVIOUS-SECTION"
Dieser Befehl sollte den Wert für den angegebenen Schlüssel ausgeben:
Fehlerbehandlung und Wiederholungsversuche
Im Falle eines Fehlers beim Senden von Ereignissen an Azure Functions werden die meisten Vorgänge von Stream Analytics wiederholt. Mit Ausnahme des HTTP-Fehlers 413 (Entität zu groß) werden alle HTTP-Ausnahmen bis zur erfolgreichen Ausführung wiederholt. Fehler vom Typ „Entität zu groß“ werden als Datenfehler gemäß der Ausgabefehlerrichtlinie behandelt und entweder wiederholt oder verworfen.
Hinweis
Das Zeitlimit für HTTP-Anforderungen von Stream Analytics an Azure Functions ist auf 100 Sekunden festgelegt. Falls Ihre Azure Functions-App mehr als 100 Sekunden für die Verarbeitung eines Batches benötigt, tritt für Stream Analytics ein Fehler auf, und die Batchverarbeitung wird erneut versucht.
Wiederholungsversuche infolge eines Timeouts können dazu führen, dass doppelte Ereignisse in die Ausgabesenke geschrieben werden. Wenn von Stream Analytics ein erneuter Versuch für einen nicht erfolgreichen Batch ausgeführt wird, umfasst dieser Versuch alle Ereignisse im Batch. Stellen Sie sich beispielsweise einen Batch mit 20 Ereignissen vor, die von Stream Analytics an Azure Functions gesendet werden. Angenommen, Azure Functions benötigt 100 Sekunden für die Verarbeitung der ersten zehn Ereignisse. Nach 100 Sekunden wird die Anforderung von Stream Analytics unterbrochen, da keine positive Antwort von Azure Functions empfangen wurde, und es wird eine weitere Anforderung für den gleichen Batch gesendet. Die ersten zehn Ereignisse im Batch werden erneut von Azure Functions verarbeitet, was ein Duplikat zur Folge hat.
Bekannte Probleme
Wenn Sie im Azure-Portal versuchen, die Werte für die maximal zulässige Batchgröße oder die maximal zulässige Batchanzahl auf einen leeren Wert (Standard) zurückzusetzen, ändert sich der Wert beim Speichern in den zuvor eingegebenen Wert. Geben Sie in diesem Fall die Standardwerte für diese Felder manuell ein.
Die Verwendung von HTTP-Routing für Ihre Azure Functions wird derzeit nicht von Stream Analytics unterstützt.
Die Unterstützung von Verbindungen mit der Azure Functions-Lösung, die in einem virtuellen Netzwerk gehostet wird, ist nicht aktiviert.
Bereinigen von Ressourcen
Löschen Sie die Ressourcengruppe, den Streamingauftrag und alle dazugehörigen Ressourcen, wenn Sie sie nicht mehr benötigen. Durch das Löschen des Auftrags verhindern Sie, dass Kosten für die vom Auftrag verbrauchten Streamingeinheiten anfallen. Wenn Sie den Auftrag in Zukunft verwenden möchten, können Sie ihn beenden und später bei Bedarf neu starten. Wenn Sie diesen Auftrag nicht mehr verwenden möchten, löschen Sie alle Ressourcen, die im Rahmen dieser Schnellstartanleitung erstellt wurden:
- Klicken Sie im Azure-Portal im Menü auf der linken Seite auf Ressourcengruppen und dann auf den Namen der erstellten Ressource.
- Klicken Sie auf der Seite mit Ihrer Ressourcengruppe auf Löschen, geben Sie im Textfeld den Namen der zu löschenden Ressource ein, und klicken Sie dann auf Löschen.
Nächste Schritte
In diesem Tutorial haben Sie einen einfachen Stream Analytics-Auftrag erstellt, der eine Azure-Funktion ausführt. Weitere Informationen zu Stream Analytics-Aufträgen erhalten Sie im nächsten Tutorial: