2016-04-07 8 views
3

Ich habe die folgenden Funktionen in der gleichen Web-Job-Konsole App, die die azure-Jobs SDK und seine Erweiterungen verwendet. Der zeitgesteuerte Trigger fragt einen API-Endpunkt für eine Datei ab, führt zusätzliche Arbeiten durch und speichert die Datei anschließend im Blob namens blainput. Nun soll die zweite Methode "ProcessBlobMessage" die neue Blob-Datei im blainput identifizieren und etwas damit machen.Kontinuierlicher Web-Job mit Timer-Trigger und Blob-Trigger

public static void ProcessBlobMessage([BlobTrigger("blahinput/{name}")] TextReader input, 
     string name, [Blob("foooutput/{name}")] out string output) 
    {//do something  } 

    public static void QueryAnAPIEndPointToGetFile([TimerTrigger("* */1 * * * *")] TimerInfo timerInfo) { // download a file and save it to blob named blah input} 

Das Problem hier ist: Wenn ich die oben genannten Bahn Job als kontinuierliche Bereitstellung, nur die Timer-Ereignisse ausgelöst scheint ausgelöst werden, während die Funktion, die die neue Datei identifizieren soll nie ausgelöst wird. Ist es nicht möglich, zwei solche Trigger im selben Web-Job zu haben?

Antwort

2

Aus diesen Artikel: How to use Azure blob storage with the WebJobs SDK

Das WebJobs SDK Scans Protokolldateien für neue oder geänderte Blobs zu beobachten. 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, wird empfohlen, beim Erstellen des Blobs eine Warteschlangennachricht zu erstellen und das Attribut QueueTrigger anstelle des Attributs BlobTrigger für die Funktion zu verwenden, die den Blob verarbeitet.

+0

Vielen Dank für die schnelle Antwort! Sicherlich wird mein Code ein wenig umgestaltet, um zu versuchen, Warteschlangen zu verwenden, um eine bessere Zuverlässigkeit zu erreichen, und ich habe auch Konfigurationseinstellungen für die Warteschlangenverarbeitung gefunden, die mir helfen könnten, die Abfrage und die Stapelverarbeitung ebenfalls einzustellen. Danke noch einmal! – Jaya

+1

@JS_GodBlessAll. Hier ist ein guter Ausgangspunkt, um mit der Warteschlange umgehen https://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-webjobs-sdk-storage-queues-how-to/ – Thomas

0

Bis die neue Blob-Trigger-Strategie veröffentlicht wird, sind BlobTriggers nicht zuverlässig. Der Auslöser basiert auf Azure Storage Analytics-Protokollen, die Protokolle auf Best-Effort-Basis speichern. Es gibt eine laufende Github issue darüber und es gibt auch eine PR in Bezug auf eine new Blob scanning strategy.

Überprüfen Sie, ob Sie die Latest Webjobs SDK version 1.1.1 verwenden, da es an issue auf früheren Versionen gab, die zu Problemen auf BlobTriggers führen könnten.

Verwandte Themen