Ist es möglich, die Ausführung des Web-Jobs über die Post-Anforderung auszulösen? Mein Szenario ist, dass der Job darauf wartet, dass der Datenanbieter Daten über HTTPS sendet, und dies sollte die Datenverarbeitung auslösen - das Parsen der Daten und dann einige geschäftliche Aktionen. Ich kann viele Beispiele mit Warteschlangen sehen und es ist einfach zu testen und zu erstellen, aber nicht sicher, wie die Warteschlange zu füllen, außer manuell, um einige Daten einzugeben. Ist es möglich, eine Warteschlange mit http-Post-Daten irgendwie zu füllen?Azure WebJob ausgelöst durch WebPost Anforderung
Antwort
können Sie Azure ServiceBus Queue verwenden.
Azure Webjobs haben eine ServicebusTrigger, die Sie in Ihrem Szenario verwenden können.
Wenn Sie nicht die Client-Bibliothek verwenden, können Sie Nachrichten an eine Warteschlange über http senden:
Andernfalls, wenn Sie Ihre Nachricht zu groß ist, können Sie speichern Sie Ihre Nachricht in eine Azure Storage Klecks. Azure Webjobs haben eine BlobTrigger. Es gibt jedoch einige Einschränkungen:
Das WebJobs SDK überprüft Protokolldateien, um nach neuen oder geänderten Blobs zu suchen. Dieser Prozess ist nicht Echtzeit; Eine Funktion wird möglicherweise erst einige Minuten oder länger nach der Erstellung des Blobs ausgelöst. Zusätzlich storage logs are created on a "best efforts" Basis; Es gibt keine Garantie, dass alle Ereignisse erfasst werden. Unter bestimmten Umständen könnten Protokolle verloren gehen. Wenn die Geschwindigkeits- und Zuverlässigkeitseinschränkungen von Blob-Triggern für Ihre Anwendung nicht akzeptabel sind, empfiehlt es sich, beim Erstellen des Blobs eine Warteschlangennachricht zu erstellen und anstelle des Attributs
BlobTrigger
für die Funktion, die den Blob verarbeitet, das QueueTrigger-Attribut zu verwenden.
Ich kann sehen, wie Ihre Idee funktionieren könnte. Meine Sorge ist jetzt, dass die Nachrichten, die vom Servicebus gesendet werden, zu groß sind - vielleicht ungefähr 2-3 MB xml Daten. In meinem Fall ist es wahrscheinlich besser, eine einfache Web-App einzurichten, die alle Post-Anfragen erfasst und irgendwo in der Datenbank speichert. Dann wird eine Nachricht in der Nachrichtenwarteschlange erstellt, die vom Web-Job verarbeitet wird, der auf Änderungen wartet. Ich denke sogar, warum nicht den Prozess in der Web-App selbst, wie die Warteschlange mit einigen dely Prozess sein kann. Ich brauche eine Nachricht, die sofort verarbeitet wird, sobald sie eintrifft und die Lösung skalierbar ist. –
Die Nachricht, die der Webjob erhalten wird, ist nur, dass ein neues Element empfangen wird, und liest dann die XML-Daten aus der Datenbank. Ist das nicht zu kompliziert zu denken? Es wird einfach zu skalieren Ich kann die Anzahl der Jobs erhöhen, nicht sicher über die Web-App, die tatsächlich die Daten empfängt - ich denke, kann mit Load Balancer durchgeführt werden. Was ich wahrscheinlich tun werde, ist zunächst die einfachste Lösung. –
so können Sie einen Blobspeicher verwenden. Es gibt einen Blobtrigger für den Webjob. https://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-webjobs-sdk-storage-blobs-how-to/. Ich werde meinen Beitrag morgen bearbeiten. – Thomas