Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.
- Die Verbindung mit Azure Functions in einem virtuellen Netzwerk (VNet) aus einem Stream Analytics-Auftrag, der in einem Multitenantcluster ausgeführt wird, wird nicht unterstützt.
In diesem Tutorial lernen Sie Folgendes:
- Erstellen einer Azure Event Hubs-Instanz
- Instanz von Azure Cache for Redis erstellen
- 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
- Prüfen Sie Azure Cache for Redis auf Ergebnisse
Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher, dass Sie die folgenden Schritte ausführen:
- 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 Namespace-Seite Event Hubs 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 Namespaceseite " Event Hubs " im linken Menü "Richtlinien für den freigegebenen Zugriff " 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 EventHubName-Schlüssels auf den Namen des Ereignishubs fest, den Sie im vorherigen Abschnitt erstellt haben.
- 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 2Fü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 sind die Schalter Zeichenfolgen, 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 im linken Menü "Alle Dienste " aus, suchen Sie nach Stream Analytics-Aufträgen, zeigen Sie mit der Maus auf die Kachel " Stream Analytics-Aufträge ", und wählen Sie dann die Schaltfläche aus, oder wählen + Sie im Popupfenster " 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, wenn sie nicht bereits ausgewählt ist. Für Stream Analytics-Aufträge ist eine Cloud- oder Edge-Bereitstellung möglich. Mit Cloud können Sie auf Azure Cloud bereitstellen, und mit Edge können Sie auf einem IoT Edge-Gerät bereitstellen.
Wählen Sie für Streamingeinheiten den Wert 1 aus. Streamingeinheiten sind die Computing-Ressourcen, 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 Zur Ressource gehen, um zur Stream Analytics-Job-Seite 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 benutzerfreundlicher Name, der Ihre Eingabe identifiziert. Der Eingabealias darf nur alphanumerische Zeichen und Bindestriche 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 für den Namen der Event Hub-Richtlinie"Vorhandenes verwenden" und dann die Standardrichtlinie " RootManageSharedAccessKey" aus.
Wählen Sie unten auf der Seite Speichern aus.
Instanz von Azure Cache for Redis erstellen
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 schreibt
Lesen Sie den Abschnitt Erstellen einer Funktions-App in der Dokumentation zu Functions. In diesem Beispiel wird Folgendes verwendet:
Erstellen Sie eine standardmäßige HttpTrigger-Funktions-App in Visual Studio Code, indem Sie diesem Tutorial folgen. Verwenden Sie die folgenden Informationen: Sprache:
C#, Laufzeit:.NET 6(unter Funktion v4), Vorlage:HTTP 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.88Fügen Sie die Elemente
RedisConnectionStringundRedisDatabaseIndexim AbschnittValuesIhrerlocal.settings.jsonhinzu, 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 mit Ihrem eigenen:
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.
Publish die Funktion zu Azure.
Öffnen Sie die Funktion im Azure-Portal, und legen Sie Anwendungseinstellungen für
RedisConnectionStringundRedisDatabaseIndexfest.
Aktualisieren Sie den Stream Analytics-Auftrag, wobei die Funktion als Ausgabe verwendet wird.
Öffnen Sie Ihren 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:
Eigenschaftsname 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. Funktion App Der Name Ihrer Functions-App Funktion Der Name der Funktion in Ihrer Funktions-App (Name Ihrer run.csx-Funktion) Maximale Batchgröße 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. Maximale Stapelanzahl 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. Wenn Sie unterschiedliche Namen verwendet haben, aktualisieren Sie die Abfrage.
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.SwitchNumStarten 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 2Starten 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:
Prüfen Sie Azure Cache for Redis auf Ergebnisse
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.
Erhalte "KEY-FROM-THE-PREVIOUS-SECTION"
Mit diesem Befehl wird der Wert für den angegebenen Schlüssel gedruckt:
Fehlerbehandlung und Wiederholungsversuche
Im Falle eines Fehlers beim Senden von Ereignissen an Azure Functions werden die meisten Vorgänge von Stream Analytics wiederholt. Es wird alle HTTP-Ausnahmen bis zum Erfolg erneut ausgeführt, mit Ausnahme des HTTP-Fehlers 413 (Entität zu groß). Eine zu große Entität wird als Datenfehler behandelt, der der Wiederholungs- oder Verwerfungsrichtlinie unterliegt.
Hinweis
Das Zeitlimit für HTTP-Anforderungen von Stream Analytics an Azure Functions ist auf 100 Sekunden festgelegt. Wenn Ihre Azure Functions-App mehr als 100 Sekunden benötigt, um einen Batch zu verarbeiten, gibt Stream Analytics einen Fehler zurück und führt den Batch erneut aus.
Wiederholungsversuche infolge eines Timeouts können dazu führen, dass doppelte Ereignisse in die Ausgabesenke geschrieben werden. Wenn Stream Analytics einen fehlgeschlagenen Batch erneut aufruft, werden alle Ereignisse im Batch erneut ausgeführt. Betrachten Sie beispielsweise einen Batch von 20 Ereignissen, die Stream Analytics an Azure Functions sendet. Angenommen, Azure Functions benötigt 100 Sekunden für die Verarbeitung der ersten zehn Ereignisse. Nach 100 Sekunden hält Stream Analytics die Anforderung an, da sie keine positive Antwort von Azure Functions erhalten hat, und sendet eine weitere Anforderung für denselben Batch. Azure Functions verarbeitet die ersten 10 Ereignisse im Batch erneut, was zu einem Duplikat führt.
Bekannte Probleme
Wenn Sie im portal Azure versuchen, den Wert "Max Batch Size" oder "Max Batch Count" auf "leer" zurückzusetzen (Standard), ändert sich der Wert beim Speichern wieder in den zuvor eingegebenen Wert. Geben Sie in diesem Fall die Standardwerte für diese Felder manuell ein.
Stream Analytics unterstützt derzeit die Verwendung von HTTP-Routing für Ihre Azure Functions nicht.
Die Unterstützung von Verbindungen mit der Azure Functions-Lösung, die in einem virtuellen Netzwerk gehostet wird, ist nicht aktiviert.
Bereinigen von Ressourcen
Wenn Sie die Ressourcen nicht mehr benötigen, löschen Sie die Ressourcengruppe, den Streamingauftrag und alle zugehörigen Ressourcen. Durch das Löschen des Auftrags wird die Rechnungsstellung für die Streaming-Einheiten gestoppt, die der Auftrag verbraucht. Wenn Sie beabsichtigen, den Auftrag in Zukunft zu verwenden, 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 Lernprogramm haben Sie einen einfachen Stream Analytics-Auftrag erstellt, der eine Azure Function ausführt. Weitere Informationen zu Stream Analytics-Aufträgen erhalten Sie im nächsten Tutorial: