2016-06-09 15 views
0

Ich habe einen azur webjob zu stoppen, wo es eine Funktion von einem azurblauen WarteschlangeWie Warteschlange Trigger-Ausführung auf einem Azure Webjob

public class Functions 
{ 
    public static void ProcessQueueMessage([QueueTrigger("scannedcodes")] string message, TextWriter log) 
    { 
     // do something 
    } 
} 

In dieser Anwendung gibt es auch einen Timer mit einem Intervall von 5 Minuten ausgelöst ist . Wenn das Ereignis Elapsed des Zeitgebers ausgelöst wird, muss ich etwas in der Ereignisbehandlungsroutine ausführen, für das die von der Warteschlange ausgelöste Methode nicht ausgeführt werden muss.

Das eigentliche Problem besteht darin, dass der Warteschlangentrigger 16 parallele Threads ausführt, sodass jeder Thread eine Warteschlangennachricht verarbeiten kann. Ich brauche also keine Threads, die ausgeführt werden, um Code in den Timer-Event-Handler auszuführen.

+0

So ist der TimerTrigger im gleichen webjob läuft? – Thomas

+0

Ja, sie laufen alle im selben Web-Job zusammen – Matteo

Antwort

0

Ich würde mir die Methoden Interlocked Increment und Decrement ansehen, um eine laufende Summe aktiver Prozesse zu erhalten. Rufen Sie in der ersten Zeile Ihrer Methode Increment auf, und rufen Sie in der letzten Zeile Decreement auf. Wenn das Timer-Ereignis ausgelöst wird, überprüfen Sie den aktuellen Wert des Zählers und warten Sie entweder auf 0 oder nichts.

https://msdn.microsoft.com/en-us/library/system.threading.interlocked_methods(v=vs.110).aspx

Verwandte Themen