Ich habe eine einfache Azure Worker-Rolle ausgeführt, die jeden Tag um 12 Uhr eine Aufgabe ausführt. Unten ist der Code, der dies bewirkt.
%Vor% Hier DoSomethingElse()
ist eine Methode, um eine E-Mail an jedem Tag um 12 Uhr zu senden, und feuert auch einmal und nur einmal am Tag.
Wie kann ich einen Scheduler implementieren, der ausgelöst wird, wenn die Zeit 12 Uhr mittags ist, und DoSomethingElse()
ausführen.
Meine Frage ist: Ist dies (über dem Code) die beste Methode oder verwenden Sie ein Drittanbieter-Tool?
Es gibt noch einige andere Fragen, die sich damit beschäftigen (und ich habe oben einen markiert). Dies gesagt, und auf die Gefahr der Wiederholung, was andere Antworten bereits sagen:
In Ihrem Fall würde eine einfache Nachricht in einer Windows Azure-Warteschlange funktionieren, die zeitverzögert ist, um bis Mittag nicht angezeigt zu werden. Dies hilft auch beim Umgang mit Multi-Instanz-Szenarien: Wenn Sie zwei Instanzen Ihrer Rolle ausführen, möchten Sie nicht, dass dieselbe geplante Aufgabe zweimal ausgeführt wird. Sie benötigen also eine Möglichkeit, dass nur einer dieser Instanzen diesen Code ausführt. Dies kann einfach über eine Warteschlangennachricht gehandhabt werden, oder Sie können Scheduler-Code für eine einzelne Instanz ausführen, indem Sie etwas wie eine Blob-Lease (die möglicherweise nur eine Schreibsperre hat) als Mutex verwenden. Dies wird im @ smarx-Blogpost hier behandelt.
>Sie können auch Quartz.Net Ссылка verwenden Die Verwendung der oben genannten Blob-Lease ist eine großartige Möglichkeit, um sicherzustellen, dass nur eine Ihrer Instanzen Aufgaben hostet.
Mit Quarz. Net zum Planen von Jobs in Windows Azure Worker Roles
Cloud Scheduler befasst sich speziell mit der Aufgabenplanung in der Cloud.
Ich bin gerade auf dieses Problem gestoßen, also habe ich es nicht ausprobiert.
Aktualisieren : Vergessen Sie den Cloud-Scheduler! Ich habe meinen Tagesablauf 600 Mal hintereinander ausgeführt, was dazu führte, dass 600 E-Mails an meine Kunden gesendet wurden. Nicht benutzen !!!
Verwenden Sie den Azure-Taskplaner . Schönes Tutorial von Scott Gu hier .
Insbesondere würde ich den Aktionstyp "Speicherwarteschlange" untersuchen - registrieren Sie sich einfach für Warteschlangenereignisse in Ihrer Worker-Rolle.
(Beachten Sie, dass dieser Dienst möglicherweise Geld kostet, wenn Sie Aufgaben häufiger als jede Stunde planen möchten.)